一个带有python xmpppy的机器人脚本,如何检测网络故障?

发布于 2024-12-06 15:48:05 字数 261 浏览 3 评论 0原文

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

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

我找到了回调,RegisterDisconnectHandler(self, DisconnectHandler),但它对网络故障不起作用,只有当我显式调用方法“disconnect”时它才起作用。

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

I am using xmpppy libary to write a XMPP IM robot.

I want to act on disconnects, but I don't know how to detect disconnects. This could happen if your Jabber server crashes or if you have lost your internet connection.

I found the callback, RegisterDisconnectHandler(self, DisconnectHandler), but it didn't work for the network failure, it only works when I explicitly call the method "disconnect".

How do I detect a network failure or server crash?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

隔岸观火 2024-12-13 15:48:05

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

  1. 将计时器设置为 N
  2. 在发送节
  3. 时 ,将计时器重置为 N火了,发个空间。

Did you try waiting 30 minutes after the network failure? Depending on your network stack's settings, it could take this long to detect. However, if you're not periodically sending on the socket, you may never detect the outage. This is why many XMPP stacks periodically send a single space character, using an algorithm like:

  1. Set timer to N seconds
  2. On sending a stanza, reset the timer to N
  3. When the timer fires, send a space.
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文