我希望用 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(使用前将#替换为@)