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消息
基础教程推荐
猜你喜欢
- 在 Celery 工作人员中捕获 Heroku SIGTERM 以优雅地关 2022-01-01
- 将 x 轴刻度更改为自定义字符串 2022-01-01
- 使用生成器和迭代器时 Python 多循环失败 2022-01-01
- Discord.py 缺少必需的参数 2022-01-01
- 用 Python 编写 Fortran 无格式文件 2022-01-01
- 由Python将MP3转换为MIDI(类型错误:无法加载插件:mtg-Melodia:Melodia) 2022-01-01
- pyserial - 可以从线程 a 写入串行端口,是否阻塞从线程 b 读取? 2022-01-01
- 与常规 dict 相比,Python manager.dict() 非常慢 2022-01-01
- 尝试制作WhatsApp机器人 2022-01-01
- numpy float:比算术运算中内置的慢 10 倍? 2022-01-01
