我想在失败时将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是间隔的,所以我无法确定连接是否有效。
答案 0 :(得分:1)
您可以以固定间隔发送PING,并在发送PING后立即将标志设置为False。如果您收到PINGRESP,则将标志设置为true。当您要发送下一个PING时,请检查该标志。如果该标志仍然为False意味着您没有收到PINGRESP并且您可以假设连接丢失。实际上我已经修改了umqtt简单库来支持这里git https://github.com/AntonisKekempanos/SonoffMicropythonMQTT。