我在使用Smack构建一个小型XMPP客户端/机器人时遇到了一种相当奇怪的行为。我设置了连接以及ConnectionListener和ChatManagerListener。这很好地工作,我可以与运行在便携设备上的应用程序聊天。
为了测试失去连接的情况,我拔下了便携设备的以太网电缆。我期望XMPP客户端失去连接,并且用户将被设置为“离线”在用户好友的名单中。然而实际发生的是,该用户仍显示为“在线”,我的客户端的ConnectionListener既没有触发connectionClosed也没有reconnectionFailed或其他任何事件。
当我重新插入以太网电缆时,有时就像连接一直存在一样。离线消息会得到处理,我可以像以前一样聊天。
其他时候,我的客户端完全无法访问和运作,似乎所有的监听器都消失了...但没有抛出任何异常。
这是一种相当奇怪且无法控制的行为,对我来说将使整个客户端无法使用,因为我无法确定客户端在连接中断后是否能正常运行。
是否有其他人遇到过这样的问题或者有任何提示是(不)发生了什么?
如果需要,我可以提供我的代码,但它实际上只是从Smack文档中复制并粘贴的。