0

当应用程序处于后台并且 xmpp 由于互联网中断而断开连接时,如果互联网恢复正常,当我打开应用程序时,不会进行断开连接,因此应用程序不会尝试重新连接。

如果我检查 xmppstream 已连接,则显示为是。当我返回应用程序时,如何检查连接是否仍然存在?

目前我正在尝试断开连接,并在每次应用唤醒时连接。但理想的是检测断开连接......

谢谢

4

2 回答 2

3

如果您可以检测到应用何时唤醒,则发送ping。如果您没有收到回复,请重新连接。如果您使用的 XMPP 库支持Stream Management,尤其是流恢复支持,您可以使用它来获取流。

一个更好的解决方案是有一个单独的守护进程来管理连接,并在后台保持活动状态,如果这在 iOS 上是允许的。此外,这个 XEP可能很有趣。

于 2011-11-15T23:21:55.370 回答
3

如果您使用的是 XMPPFramework (https://github.com/robbiehanson/XMPPFramework),那么看看 XMPPReconnect,它将为您省去很多重新连接的麻烦。

创建流后,使用以下内容。

xmppReconnect = [[XMPPReconnect alloc] init];
[xmppReconnect activate:xmppStream];
[xmppReconnect addDelegate:self delegateQueue:dispatch_get_main_queue()];
于 2012-06-13T20:20:49.627 回答