4

我想在失败时将 MQTT 客户端重新连接到服务器。

我正在使用uqmtt.robust重新连接:它适用于一些故障,但不处理互联网断开连接。我正在考虑这样做:

while True:
 if c.isConnected():# how to check this?
  c.wait_msg()
 else:
  c=MQTTClient(params)
  c.connect() #reconnect trial

我试图通过阅读 PINGRESP 来解决,但 ping 是间隔的,所以我找不到连接是否有效。

4

1 回答 1

3

您可以以固定的时间间隔发送 PING,并在发送 PING 后立即将标志设置为 False。如果收到 PINGRESP,请将标志设置回 true。在即将发送下一个 PING 时检查标志。如果标志仍然是 False 意味着您没有收到 PINGRESP 并且您可以假设连接丢失。实际上我已经修改了 umqtt 简单库以支持这一点,这里是 git https://github.com/AntonisKekempanos/SonoffMicropythonMQTT

于 2018-01-04T16:59:24.277 回答