Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/357.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从服务器端Java应用程序发送XMPP通知?_Java_Node.js_Xmpp - Fatal编程技术网

如何从服务器端Java应用程序发送XMPP通知?

如何从服务器端Java应用程序发送XMPP通知?,java,node.js,xmpp,Java,Node.js,Xmpp,我有一个Java服务器应用程序,可以与其他应用程序/服务器对话。它还必须代表多个用户与XMPP服务器通信。因此,每个用户使用一个端口不是一个选项。因此我考虑使用BOSH(实际上是对BOSH的一个小攻击,在收到响应时不ping服务器,而是在XMPP服务器上BOSH连接的非活动时间到期之前ping服务器)。我还希望将BOSH连接的“等待”时间设置为最小值,以便服务器立即返回响应。所有这些都是为了不让端口占用太长时间 我正在研究支持BOSH的不同的基于Java的XMPP客户机库,我唯一开始工作的是Ti

我有一个Java服务器应用程序,可以与其他应用程序/服务器对话。它还必须代表多个用户与XMPP服务器通信。因此,每个用户使用一个端口不是一个选项。因此我考虑使用BOSH(实际上是对BOSH的一个小攻击,在收到响应时不ping服务器,而是在XMPP服务器上BOSH连接的非活动时间到期之前ping服务器)。我还希望将BOSH连接的“等待”时间设置为最小值,以便服务器立即返回响应。所有这些都是为了不让端口占用太长时间

我正在研究支持BOSH的不同的基于Java的XMPP客户机库,我唯一开始工作的是Tigase JaXMPP库(在对它进行了一些黑客攻击之后)。但由于许可模式的原因,我无法在我的项目中使用它。另一个选择是Smack,但我意识到他们在官方版本中还不支持BOSH(这是在一个分支上,我认为它不是真正活跃的)。是否有人知道此要求的其他选项

当我阅读更多内容时,我发现Strophe.js——据说它对BOSH有很大的支持——但这似乎更适合基于web的应用程序。有人知道我如何从java代码中调用Strophe函数吗?还有人知道我是否可以修改Strophe.js库,在BOSH连接上设置不同的等待时间,并且在收到响应时不ping服务器,而只是在非活动时间到期之前


非常感谢您的任何见解或想法。

我为您提供了一些选择

第一个选项是让你的应用程序作为一个服务器连接以生成消息。这允许任何进程与XMPP服务器建立持久连接,通过该连接可以传输消息。一些服务器(Prosody、ejabberd和其他可能的服务器)甚至允许组件从他们喜欢的任何JID“欺骗”消息

XMPP服务器中的组件支持几乎是通用的,这非常好。此外,各种语言中的许多库都支持充当组件,因此您应该具有很大的灵活性(不幸的是,我不太了解Java库,无法给出它们的详细信息)

第二个选项稍微不那么标准化,但根据你的应用程序,你可能会发现它更容易。有些服务器支持通过XMPP以外的协议向它们发送消息。例如,你会发现韵律和ejabberd。这两种语言都允许服务器接受作为HTTP POST请求提交的消息,这实在是太简单了,几乎每种语言都可以在几行内发出HTTP请求


这种方法的缺点是它不能在XMPP服务器之间移植,但这是一项非常简单的任务,在您选择使用的任何服务器上都不难做到。

您是否也需要为这些用户接收消息/诗节?或者是单向的?所以这个服务器应用程序从另一个应用程序接收用户的通知,并且必须处理这些通知并在XMPP服务器上登录/注销用户。它根本不必处理此用户的任何消息。事实上,我们将在XMPP服务器上阻止它们(在我们的控制下),或者在这个服务器上忽略它们。希望我回答了你的问题。