我希望用Java实现一个简单的XMPP服务器。
我需要的是一个可以解析和理解来自客户端的xmpp请求的库。我看过Smack(如下所述)和JSO。Smack似乎仅是客户端,因此虽然它可能有助于解析数据包,但它不知道如何响应客户端。是JSO维护的,它看起来很旧。唯一有前途的途径是拆散Openfire,后者是整个商业(OSS)XMPP服务器。
我只是希望在Netty或Mina之上有几行代码,所以我可以开始处理一些消息。
乔-
好吧,我要做什么的答案有些长-我会尽量简短。
有两件事只是松散相关:
1)我想编写一个XMPP服务器,因为我想编写一个供两个客户端进行通信的自定义协议。基本上,我在考虑联网的iPhone应用程序- 但我不想依赖于低级二进制协议,因为使用XMPP之类的东西意味着该应用程序可以非常迅速地从基于本地wifi的应用程序“成长”到基于Internet的应用程序…
交换的消息应该具有相对较低的延迟,因此严格来说,二进制协议是最好的,但是我觉得值得探索一下XMPP是否不会引入过多的开销,以便我可以使用它,然后从中获得其可扩展性的好处。和灵活性。
2)我为Terracotta工作- 所以我有这个疯狂的想法将所有东西都聚在一起。一开始考虑编写一些自定义服务器代码,我就想将其集群。Terracotta使得扩展Java POJO变得微不足道,因此我的想法是构建一个超级简单的XMPP服务器作为Terracotta的演示应用程序。基本上,每个用户都将通过TCP连接连接到服务器,这会将用户注册到哈希图中。每个用户都有一个LinkedBlockingQueue,其中一个侦听器线程从队列中获取消息。然后,任何想要向其他任何用户发送消息的已连接用户(例如,任何旧的聊天应用程序)都只需通过连接向该用户发出XMPP消息(照常)。服务器将其拾取,在地图中查找相应的用户对象,然后将消息放入队列。由于队列是集群的,
所以- 恐怕摘要太短了。但这就是我要做的。我想我可以为Openfire编写一个插件来完成#1,但我认为它要花很多精力,所以很难做#2(特别是因为我希望能容纳少量的代码)简单的10-20kb Maven项目)。
http://xmpp.org/xmpp-software/libraries/列出了XMPP的软件库。这是它的 过时 快照: