本文介绍了重新连接后阅读订阅的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消息的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!