【发布时间】:2011-11-13 23:46:48
【问题描述】:
当应用程序处于后台并且 xmpp 由于互联网中断而断开连接时,如果互联网恢复正常,当我打开应用程序时,不会发出断开连接呼叫,因此应用程序不会尝试重新连接。
如果我检查 xmppstream 是否已连接,则显示为是。当我返回应用程序时,如何检查连接是否仍然存在?
目前我正在尝试断开连接,并在每次应用唤醒时连接。但理想的情况是检测断开连接......
谢谢
【问题讨论】:
标签: ios xmpp disconnect
当应用程序处于后台并且 xmpp 由于互联网中断而断开连接时,如果互联网恢复正常,当我打开应用程序时,不会发出断开连接呼叫,因此应用程序不会尝试重新连接。
如果我检查 xmppstream 是否已连接,则显示为是。当我返回应用程序时,如何检查连接是否仍然存在?
目前我正在尝试断开连接,并在每次应用唤醒时连接。但理想的情况是检测断开连接......
谢谢
【问题讨论】:
标签: ios xmpp disconnect
如果您可以检测到应用何时唤醒,请发送ping。如果您没有收到回复,请重新连接。如果您使用的 XMPP 库支持Stream Management,尤其是流恢复支持,您可以使用它来获取流。
更好的解决方案是拥有一个单独的守护进程来管理连接,并在后台保持活动状态,如果这在 iOS 上是允许的话。另外,this XEP 可能会引起您的兴趣。
【讨论】:
如果您使用的是 XMPPFramework (https://github.com/robbiehanson/XMPPFramework),那么看看 XMPPReconnect,它将为您省去很多重新连接的麻烦。
创建流后,使用以下内容。
xmppReconnect = [[XMPPReconnect alloc] init];
[xmppReconnect activate:xmppStream];
[xmppReconnect addDelegate:self delegateQueue:dispatch_get_main_queue()];
【讨论】: