XMPP iOS框架如何检测与OpenFire服务器的网络连接问题?

10

我使用XMPP iOS框架和OpenFire服务器实现了聊天应用。

幸运的是,该应用程序正在成功地运行,但我遇到了一个问题,即应用程序在断网时无法正常工作。

当用户手动注销或进入离线模式时,它会向他/她的列表发送一个stanza。因此,他/她的列表知道用户已进入离线模式。

现在,当用户设备上的互联网连接中断时,应用程序将无法发送存在感stanza到服务器,由于互联网中断。因此,他/她的通讯录不会获得有关该离线用户的信息,并且该用户仍将显示为在线状态。

我认为类似OpenFire服务器这样的东西可能能够检查连接的用户,并且每当任何用户断开连接时,它都应该向他的通讯录发送带有离线状态的存在感stanza,以便他们可以知道该用户处于离线模式。

如果有任何方法可以通过实现此功能来帮助我,请问有人可以帮忙吗?

这将对我解决此问题非常有帮助。

提前致谢。


你好... 你能否检查一下你的网络连接?如果可以的话,你可以向所有朋友发送某个用户的离线状态。我的意思是,如果图书馆无法正常工作,我们可以手动检查连接并采取必要的措施。 - iCodeAtApple
1
@iCodeAtApple 我可以在我的端检查互联网连接,但是由于互联网连接丢失,我无法向其他朋友发送状态 :( - Jayeshkumar Sojitra
你们有没有针对上述问题的解决方案? - Parthpatel1105
@Parthpatel1105,你可以使用可达性管理器来检测网络断开和Openfire的不可用特性。 - Jayeshkumar Sojitra
1个回答

4
这是xmpp的核心功能,Openfire必须代表您向您的联系人发送unavailable。所以看起来像个错误。 但还有一个不同的问题 - 使用移动互联网的用户可能会经常重新连接,XMPP社区开发了流管理扩展,允许服务器在快速重新连接并恢复会话时“休眠”客户端会话而无需更改状态。总结一下:
  1. 检查是否启用了流管理 - 在这种情况下,用户仍然在线固定时间(通常为5分钟),然后离线。
  2. 检查Openfire是否实现了任何非标准扩展来维护用户会话。
  3. 如果您确定没有扩展正在“休眠”用户会话 - 那么这确实是一个错误。尝试使用不同的xmpp服务器进行相同的操作 - 推荐使用ejabberdprosody

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