我有一个实现Smack 4.1.7的Java应用程序,正在将其用作Openfire 4.0.2的模拟客户端。目前,Openfire正在我的本地主机上运行。
Smack可以使用此连接登录并正确验证身份:

XMPPTCPConnectionConfiguration conf = XMPPTCPConnectionConfiguration.builder()
      .setSecurityMode(ConnectionConfiguration.SecurityMode.disabled)
      .setServiceName(XMPP_HOST_NAME) // equals xmppDomain on server
      .setUsernameAndPassword("user1", "pwd1")
      .setResource("tester")
      .setDebuggerEnabled(true)
      .build();

现在,当Smack尝试创建或加入MUC时,请求超时(SmackException $ NoResponseException),并且Openfire记录以下内容:
2016.07.03 18:58:54 org.jivesoftware.openfire.spi.RoutingTableImpl -
Unable to route packet. Packet should only be sent to available sessions and the
route is not available.
<presence id="WrkXH-6" from="user1@localhost/tester" to="user1@localhost/tester">
    <c xmlns="http://jabber.org/protocol/caps" hash="sha-1" node="http://www.igniterealtime.org/projects/smack" ver="NfJ3flI83zSdUDzCEICtbypursw="/>
</presence>
2016.07.03 18:58:54 org.jivesoftware.openfire.spi.RoutingTableImpl -
Failed to route packet to JID: user1@localhost/tester packet:
<presence id="WrkXH-6" from="user1@localhost/tester" to="user1@localhost/tester">
    <c xmlns="http://jabber.org/protocol/caps" hash="sha-1" node="http://www.igniterealtime.org/projects/smack" ver="NfJ3flI83zSdUDzCEICtbypursw="/>
</presence>

我在服务器端和客户端都使用了“localhost”,“127.0.0.1”,并且将我的计算机的名称用作XMPP_HOST_NAME,并且我不断遇到相同的错误。任何帮助,将不胜感激。

最佳答案

我发现了问题和错误。
如何处理:

Openfire具有2个值:

http.connection.timeout
http.socket.timeout

如果在属性中不可用,则两者都设置为默认值2000/3000/5000毫秒。

因此,需要通过管理控制台(或数据库)将此值设置为更高的值,例如15000/20000或更高(如果需要)。

另外,在 index.jsp的Openfire 4.0.2(可能还有较旧的版本)中,有一个调用rssfeed的调用(默认情况下启用了 ),但是此调用会将这些值重置为3000,因此基本上来说,超时是没有用的。

禁用rssfeed设置为
rss.enabled

然后重新启动Openfire。

关于localhost - Smack和本地主机上的Openfire之间的路由错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38172327/

10-10 12:35