适用于服务器端的良好 XMPP Java 库? [关闭]

2024-05-03

我希望用 Java 实现一个简单的 XMPP 服务器。

我需要的是一个可以解析和理解来自客户端的 xmpp 请求的库。我看过 Smack(下面提到)和 JSO。 Smack 似乎只是客户端,因此虽然它可能有助于解析数据包,但它不知道如何响应客户端。 JSO是否维护过,看起来很旧。唯一有希望的途径是拆散 Openfire,它是一个完整的商业 (OSS) XMPP 服务器。

我只是希望在 Netty 或 Mina 之上有几行代码,这样我就可以开始处理一些离线消息。


Joe -

好吧,我想做的事情的答案有点长——我会尽量保持简短。

有两件事只是松散相关:

1)我想编写一个XMPP服务器,因为我想象为两个客户端通信编写一个自定义协议。基本上我正在考虑一个联网的 iPhone 应用程序 - 但我不想依赖低级二进制协议,因为使用 XMPP 之类的协议意味着该应用程序可以非常快速地从基于本地 WiFi 的应用程序“成长”为基于互联网的应用程序...

交换的消息应该具有相对较低的延迟,因此严格来说,二进制协议是最好的,但我觉得如果 XMPP 没有引入太多开销,以便我可以使用它,然后获得它的可扩展性的好处,那么可能值得探索以及稍后的灵活性。

2)我为 Terracotta 工作 - 所以我有一种疯狂的倾向将所有东西聚集在一起。当我开始考虑编写一些自定义服务器代码时,我就想将其集群化。 Terracotta 使 Java POJO 的扩展变得微不足道,所以我的想法是构建一个超级简单的 XMPP 服务器作为 Terracotta 的演示应用程序。基本上每个用户都会通过 TCP 连接连接到服务器,这会将用户注册到哈希图中。每个用户都会有一个 LinkedBlockingQueue,其中有一个侦听器线程从队列中获取消息。然后,任何想要向任何其他用户(例如任何旧的聊天应用程序)发送消息的连接用户只需通过连接向该用户发出 XMPP 消息(像往常一样)。服务器拾取它,在映射中查找相应的用户对象并将消息放入队列中。由于队列是集群的,无论目标用户连接到同一物理服务器还是不同的物理服务器,消息都会被传递,正在侦听的线程会拾取该消息并将其发送回目标用户的 TCP 连接。

所以 - 恐怕不是太短的总结。但这就是我想做的。我想我可以为 Openfire 编写一个插件来完成#1,但我认为它需要处理很多管道问题,所以很难做到#2(特别是因为我希望能够适合一个非常少量的代码简单的 10-20kb Maven 项目)。


http://xmpp.org/xmpp-software/libraries/ http://xmpp.org/xmpp-software/libraries/有一个 XMPP 软件库列表。这是一个outdated它的快照:

动作脚本

  • as3xmpp http://code.google.com/p/as3xmpp/

C

  • iksemel http://code.google.com/p/iksemel/
  • 图书馆 http://www.onlinegamegroup.com/projects/libstrophe
  • 劳德茅斯 http://www.loudmouth-project.org/

C++

  • gloox http://camaya.net/gloox
  • Iris http://delta.affinix.com/iris/
  • oajabber http://www.openaether.org/oajabber.html

C# / .NET / 单声道

  • agsXMPP SDK http://www.ag-software.de/index.php?page=agsxmpp-sdk
  • 贾伯网 http://code.google.com/p/jabber-net/

Erlang

  • 贾伯朗 http://support.process-one.net/doc/display/CONTRIBS/Jabberlang

Flash

  • XIFF http://www.igniterealtime.org/projects/xiff/

Haskell

  • hsxmpp http://www.dtek.chalmers.se/~henoch/text/hsxmpp.html

Java

  • 埃科明·费里迪安 http://freecode.com/projects/feridian
  • Jabber 流对象 (JSO) http://java.net/projects/jso/
  • Smack http://www.igniterealtime.org/projects/smack/index.jsp

JavaScript

  • strope.js http://strophe.im/strophejs/
  • xmpp4js http://xmpp4js.sourceforge.net/

Lisp

  • cl-xmpp http://common-lisp.net/project/cl-xmpp/

Objective-C

  • xmpp框架 http://code.google.com/p/xmppframework/

Perl

  • 任何事件::XMPP http://www.ta-sa.org/projects/net_xmpp2.html

PHP

  • Lightr https://area51.myyearbook.com/trac.cgi/wiki/Lightr
  • xmpphp http://code.google.com/p/xmpphp/

Python

  • jabber.py http://jabberpy.sourceforge.net/
  • pyxmpp http://pyxmpp.jajcus.net/
  • 时尚XMPP http://code.google.com/p/sleekxmpp/
  • 扭曲的话 http://twistedmatrix.com/trac/
  • xmpp-psn http://code.google.com/p/xmpp-psn/
  • xmpppy http://xmpppy.sourceforge.net/

Ruby

  • XMPP4R http://xmpp4r.github.io/

Tcl

  • Jabber库 http://coccinella.im/jabberlib
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

适用于服务器端的良好 XMPP Java 库? [关闭] 的相关文章

随机推荐

  • Phonegap 之类的 Mac App Store 平台? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在使用phonegap 在iOS 本机应用程序中运行我的HTML JS 代码 有没有办法在 Mac
  • 线程终止时的 Java ExecutorService 回调

    我正在使用缓存线程池 ExecutorService 来运行一些异步后台任务 我提供了 ThreadFactory 它将线程分发给 ExecutorService 只要需要它们 我对缓存线程池的理解是 线程空闲 60 秒后 它会被 Exec
  • 如何在速度模板中显示图像

    如何在速度模板中显示此图像 显示图像需要什么配置吗 我有速度的java 配置 请帮我 提前致谢 非常感谢glw的热心回复 问题已经解决了 我忘记了电子邮件模板仅采用部署的实时图像路径 而不是像 src pageContext request
  • 嵌套列表的非递归遍历——在Python中构建类似的嵌套列表

    我需要遍历一个嵌套列表 处理每个非列表项str 并返回保持结构的类似列表 使用递归 这会相当容易 但我需要以这种迭代的方式进行 下面是我的尝试while loop def myiter e a e initial list c final
  • 是否可以在 .Net Windows 表单内托管 Microsoft Access 表单?

    我问是否可以在 Net 表单中托管 Microsoft Access 表单 不 我没有发疯 我们正在维护一个完全用 VBA 编写的庞大系统 由一个不太了解 VBA 的人尝试使用 Microsoft Access 作为 IDE 它基本上是数千
  • 媒体查询:根据屏幕尺寸限制一些CSS样式

    当我在layout css中编写一些样式时 它适用于每个屏幕尺寸和 Media Queries 部分 您有以下部分 Smaller than standard 960 devices and browsers Tablet Portrait
  • Contenteditable 显示最后插入的 html 元素

    我使用 contenteditable div 作为输入字段来输入一些文本 并通过该文本中的按钮 小 html 图片 插入图标 只要文本比 contenteditable 字段窄 就可以了 一旦文本比字段长 因此它被部分隐藏 当我输入文本字
  • Python:如何导入与子包同名的模块?

    我还没有遇到这个问题 但我很好奇如何导入与子包同名的模块 例如 可能的模块结构可能如下所示 mymodule init py string py 现在 如果我需要mymodule string分包and the string每个 Pytho
  • ZedGraph 垂直线与 LineObj 问题

    我有一个 ZedGraphControl 里面有几条曲线 我想在一些固定的 x 位置添加垂直线 当然 这些线只能位于实际图形区域内 我尝试以下 LineObj line new LineObj Color Black xPos myPane
  • jQuery 验证插件:验证自定义日期格式

    我正在使用 jQuery Validate 插件来验证我的表单 如何使用此日期格式 DD MMM YYY 2012 年 3 月 23 日 验证自定义日期 创建自定义验证器 http docs jquery com Plugins Valid
  • Xcode:将信息从 UITableViewController 传递到 UIViewController

    我有一个 UIViewController 它应该根据 UITableViewController 中按下的单元格向我显示详细信息 目前我正在给他们讲一个续集 override func prepare for segue UIStoryb
  • 返回空字符串:C++ 中的有效方法

    我有两种从函数返回空字符串的方法 1 std string get string return 2 std string get string return std string 哪一种更有效 为什么 Gcc 7 1 O3 这些都是相同的
  • Android 模拟器无法旋转至横向

    When i try to switch the orientation of my emulator the emulator window rotates and the orientation of the emulator scre
  • 如何初始化这个字典

    我想初始化一个string datetime字典中 我想要每个字符串的 实时 时间值 稍后我想将字符串作为键插入下拉列表中 将日期时间作为值插入 1 hour string datetime 1 hour value 5 hour stri
  • 在 Xamarin Studio for Mac 上添加 NuGet 包不起作用

    我已经尝试搜索这个问题 并且我遇到了许多人们无法添加 NuGet 包的问题 但没有发现任何可以解决我的问题的方法 我正在使用 Xamarin Studio for Mac 并尝试将 SQLite 包添加到我的 Xamarin Forms 项
  • 如何使用 Jest 模拟 AWS Cognito CognitoIdentityServiceProvider?

    我正在尝试编写单元测试 我需要模拟来自认知服务的方法的响应 Cognito身份服务提供商 https docs aws amazon com AWSJavaScriptSDK latest AWS CognitoIdentityServic
  • 如何将透明光标渲染到位图并保留 alpha 通道?

    我使用下面的代码来渲染透明图标 private void button1 Click object sender EventArgs e using LoadCursorFromFile from user32 dll var cursor
  • 如何从 DATE 中提取小时、分钟和秒

    我有以下查询 select cast max bid ts as TIMESTAMP from my table 我投了max bid ts因为这是双打 我想成为TMESTAMP 这个查询返回类似这样的内容 2016 04 21 12 41
  • 在 prolog 中读取用户输入的字符串

    我是 Prolog 初学者 我正在使用 swi prolog 刚刚开始使用它 我需要将用户输入字符串拆分到列表中 我尝试了以下代码 但出现错误 指出 在子句正文中完全停止 无法重新定义 2 write Enter the String nl
  • 适用于服务器端的良好 XMPP Java 库? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我希望用 Java 实现一个简单的 XMPP 服务器 我需要的是一个可以解析和理解来自客户端的 xmpp 请求的库 我看过 Smack 下