0

我正在使用 xmpppy 库来编写 XMPP IM 机器人。

我想对断开连接采取行动,但我不知道如何检测断开连接。如果您的 Jabber 服务器崩溃或您的 Internet 连接中断,则可能会发生这种情况。

我找到了回调,RegisterDisconnectHandler(self, DisconnectHandler)但它对网络故障不起作用,它仅在我显式调用方法“断开连接”时才起作用。

如何检测网络故障或服务器崩溃?

4

1 回答 1

0

您是否尝试在网络故障后等待 30分钟?根据您的网络堆栈的设置,可能需要很长时间才能检测到。但是,如果您没有定期在套接字上发送,您可能永远不会检测到中断。这就是为什么许多 XMPP 堆栈会定期发送单个空格字符的原因,使用如下算法:

  1. 将计时器设置为N
  2. 在发送节时,将计时器重置为N
  3. 当计时器触发时,发送一个空格。
于 2011-09-26T17:10:39.387 回答