使用(a)Smack登录时出现XMPP“stream:error(conflict)”

9

我目前正在为Android开发xmpp/jabber聊天应用。我刚刚尝试使用Openfire连接我的Jabber帐户,连接成功了,但是我无法发送任何消息,而是显示出某些冲突错误。请检查错误日志,并给我提供解决方案。

Initializing connection to server eworks port 5222
Connected: true
Creating entry for buddy 'testuser2' with name testuser2
Sending mesage 'Hello mate' to user testuser2@eworks
Buddy:testuser2 - Status:null
stream:error (conflict)
at org.jivesoftware.smack.PacketReader.parsePackets(PacketReader.java:306)
at org.jivesoftware.smack.PacketReader.access$000(PacketReader.java:44)
at org.jivesoftware.smack.PacketReader$1.run(PacketReader.java:76)
1个回答

11

如果出现冲突,XMPP会抛出stream:error。这是由于已经存在与相同的完整JID(即裸JID和资源部分)建立的连接。

大多数XMPP服务器可以通过在检测到冲突时重新分配不同的资源来处理冲突。此行为可以进行配置。


4
这并没有回答问题。如果您需要批评或请求作者澄清,请在他们的文章下方留言。您可以在自己的帖子下方评论,并且一旦您获得足够的声望,您就能够评论任何帖子 - ShadowScripter
5
@ShadowScripter,我看到了一个回答。但是这个回答不完整:只有在您尝试绑定已被用户绑定并因此已连接的JID资源时才会发生冲突。XMPP旨在处理来自同一用户(裸JID)的多个连接,但资源必须不同。 - Flow
2
@Flow如何解决这个问题呢?因为我遇到了冲突错误,所以如何关闭之前正在运行的与相同资源名称相关联的连接,并激活当前的连接呢?如果我使用不同的资源名称,我会看到很多具有相同名称的连接处于活动状态。 - Hunt
1
你好,@Jithu P.S,我遇到了同样的问题,如果你解决了,能帮我一下吗? - Joseph Mekwan
当同一客户端资源存在冲突并且出现冲突的StreamErrorException时,XMPP监听器“connectionClosedOnError()”会在先前运行的设备上调用,通过这种方式,我们可以关闭先前运行的连接,但问题是,它仅在第一次工作,这是我目前面临的问题。有人有关于此的想法吗? - Nooruddin Lakhani

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接