mqtt - 如何检查Micropython umqtt客户端是否已连接?

标签 mqtt esp8266 micropython

我想在失败时将 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 是有间隔的,所以我无法确定连接是否有效。

最佳答案

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

关于mqtt - 如何检查Micropython umqtt客户端是否已连接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48048875/

相关文章:

python - Micropython Esp8266 Sympy

nginx反向代理wss - 客户端在读取客户端请求行时发送无效方法

python - 增加在 Azure 容器实例上运行的 Paho-MQTT 发布者(Locust 负载测试)

javascript - mqtt.js |尽管客户端似乎已连接,但 client.connected 返回 false

Arduino/Esp8266红外遥控载频

esp32 - 内存错误: memory allocation failed Micropython

Python:使用 locals() 进行编程类实例变量初始化

java - ActiveMQ 使用 AMQP、MQTT 或 TCP 哪个更好?

c++ - 将字符串转换为 MAC 地址

c - 警告 : espcomm_sync failed error: espcomm_open failed error: espcomm_upload_mem failed