【发布时间】:2016-11-05 10:54:36
【问题描述】:
我有一个实现 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,但我一直收到同样的错误。任何帮助将不胜感激。
【问题讨论】:
-
对不起,你用用户登录了吗? localhost 将不起作用,机器名称(但您必须在控制面板中检查 openfire 服务器名称)将起作用。对我来说,来自同一个人的存在似乎很奇怪,但我必须检查
-
是的,登录工作正常。它都适用于 localhost、127.0.0.1 和机器名称(无论在 openfire 端配置什么)。建立连接时 Smack 端出现警告:org.jivesoftware.smack.util.DNSUtil resolveDomain WARNING: Exception while resovling SRV records for localhost。考虑添加 '_xmpp-(server|client)._tcp' DNS SRV 记录,但该连接和身份验证都可以。
-
也许你有一个代理,你必须添加本地主机(是的,127.0.0.1)作为例外......
-
@R_R 嗨。请问您是否需要openfire(或任何其他服务器)才能正常工作?我只想在我的电脑上运行一个简单的例子。如果这对您来说很容易,您可以发布您的所有课程吗?或者你能指导我一些教程吗?谢谢