当前位置: 首页 > 面试题库 >

用于服务器端的好的XMPP Java库?

年文柏
2023-03-14
问题内容

我希望用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的软件库。这是它的 过时 快照:

动作脚本

  • as3xmpp

C

  • 伊克谢梅尔
  • 解放
  • 劳德茅斯

C ++

  • gloox
  • 虹膜
  • Oajabber

C#/。NET /单声道

  • agsXMPP SDK
  • 贾伯网

Erlang

  • 贾伯朗

  • 西安国际电影节

哈斯克尔

  • hsxmpp

爪哇

  • 回声费里迪安
  • Jabber流对象(JSO)
  • m

的JavaScript

  • strophe.js
  • xmpp4js

Lisp

  • cl-xmpp

目标C

  • xmppframework

佩尔

  • AnyEvent :: XMPP

的PHP

  • 打火机
  • xmpphp

蟒蛇

  • jabber.py
  • pyxmpp
  • sleekXMPP
  • 扭曲的话
  • xmpp-psn
  • xmpppy

红宝石

  • XMPP4R

Tcl

  • JabberLib


 类似资料:
  • 问题内容: Node.js服务器适用于支持回调函数的基于事件的模型。但是我无法理解它比传统的基于线程的服务器(线程等待系统IO)有什么优势。在基于线程的模型的情况下,当线程需要等待IO时,它将被抢占,因此不会消耗CPU周期,因此不会增加等待时间。 Node.js如何改善等待时间? 问题答案: 线程是相对较重的对象,具有资源足迹,一直扩展到内核。当您将线程驻留在阻塞的系统调用中或互斥或条件变量上时,

  • 这听起来可能很奇怪,但我想使用 JavaFX 在服务器端生成我的图表图像。因为JavaFX有很好的画布API来执行图像转换连接和定位。 特别是我有一个SpringMVC服务来生成我的图表作为图像。主要问题是如何从一个方便的Spring bean调用javaFX API。如果我尝试只从java应用程序运行javafx代码(不扩展javaFX应用程序类),我会得到 你对如何解决这个问题有什么建议/想法

  • 我使用Spring Boot开发了这个websocket服务器。服务器与基于js的客户机配合得很好。 控制器: 这是服务器端。现在,对于客户机,我已经创建了一个@ClientEndpoint,当我连接到URI“ws://localhost:8080/spring-mvc-java/chat”时,我能够建立一个连接,并且可以看到@ClientEndpoint的@OnOpen回调被触发。 但是,use

  • (我没有ssh密码t_t)当我试图从Dell服务器面板启动虚拟终端时,服务器会给我一个文件:“viewer.jnlp…”。我用javaws运行这个文件。它有一些错误: 请求对系统进行无限制访问的无签名应用程序以下资源已使用弱签名算法MD5with RSA签名,并被视为无签名。 我怎么解决?

  • 我尝试使用Spring Integration实现UDP服务器,就像这里描述的那样,但是当客户端在NAT之后运行时,它们将永远不会收到来自服务器的响应。这是因为服务器应该从与UDP适配器端口相同的端口发送响应数据报(通过这里解释的NAT检查UDP)。 如何使用Spring Integration实现与NAT后客户端的正确UDP通信?

  • mysqladmin是一个执行管理操作的客户程序。可以用它来检查服务器的配置和当前的状态,创建并删除数据库等等。 这样调用mysqladmin: shell> mysqladmin [options] command [command-options] [command [command-options]] ... mysqladmin支持下面的命令: ·create db_name 创建一个名为