Reading subscribed MQTT messages after reconnect(重新连接后阅读订阅的MQTT消息)
本文介绍了重新连接后阅读订阅的MQTT消息的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在尝试读取MQTT服务器上的邮件。在某些情况下,连接不稳定,需要重新连接。但在重新连接后,我无法收到来自我之前订阅的主题的任何消息。我正在使用PAHO的python包来处理MQTT连接。以下是我使用的一些代码
TopicName='some/topic/name'
class Counter:
def __init__(self, mqttClient):
self.messages_recieved = 0
self.mqttClient = mqttClient
self.mqttClient.subscribe(TopicName)
self.mqttClient.on_message = self.on_message
self.mqttClient.on_disconnect = self.on_disconnect
self.mqttClient.loop_start()
def on_message(self, client, userdata, message):
self.messages_received += 1
def on_disconnect(self, client, userdata, rc):
if rc != 0:
print("Trying to reconnect")
while not self.mqttClient.is_connected():
try:
self.mqttClient.reconnect()
except OSError:
pass
如果我的互联网出现故障,我将无法再接收消息。我尝试再次订阅该主题,并尝试在on_disconnect方法中调用loop_start,但这两种方法都不起作用。任何解决方案都会有帮助。另外,为了指出消息正在发送,我可以在MQTT墙上的浏览器中看到它们
推荐答案
您尚未显示调用Connect的位置,但通常的安全模式是将调用放在附加到客户端的on_connect()
回调中。
这意味着对订阅的调用将
- 始终等到连接完成
- 重新连接发生时自动再次调用
这篇关于重新连接后阅读订阅的MQTT消息的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
沃梦达教程
本文标题为:重新连接后阅读订阅的MQTT消息


猜你喜欢
- 如何使用PYSPARK从Spark获得批次行 2022-01-01
- 检查具有纬度和经度的地理点是否在 shapefile 中 2022-01-01
- ";find_element_by_name(';name';)";和&QOOT;FIND_ELEMENT(BY NAME,';NAME';)";之间有什么区别? 2022-01-01
- 计算测试数量的Python单元测试 2022-01-01
- 我如何透明地重定向一个Python导入? 2022-01-01
- 我如何卸载 PyTorch? 2022-01-01
- CTR 中的 AES 如何用于 Python 和 PyCrypto? 2022-01-01
- 使用公司代理使Python3.x Slack(松弛客户端) 2022-01-01
- YouTube API v3 返回截断的观看记录 2022-01-01
- 使用 Cython 将 Python 链接到共享库 2022-01-01