繁体   English   中英

如何暂时断开与 MQTT 主题的连接

[英]How to temporary disconnect from MQTT topics

我实现了与经纪人的连接,例如:
应用程序.py

import paho.mqtt.client as mqtt
client = mqtt.Client(client_id='my_client', clean_session=False)
my_client = MyClient(client)
try:
    my_client.start()
    while True:
        try:
            client.loop()
        except Exception as e:
            my_client.start()
except Exception as e:
    client.loop_stop()
    exit(1)

我的客户端.py

class MyClient:
    def __init__(self, mqtt=None):
         self.mqtt = mqtt

    def start(self):
        self.mqtt.subscribe('some/topic')

我有部分代码要暂停主题收听:

self.mqtt.unsubscribe('some/topic')

后来我想重新订阅它,我想再次调用start() ,例如: self.start()

但它再也不会订阅了。 知道为什么吗?

在抛出异常后调用start()将不起作用,因为此时客户端很可能未连接。

您应该将订阅移动到on_connect 回调,然后在客户端(重新)连接后它将始终重新订阅

至于您最初的问题,最好只设置一个 boolean 标志并使用它来处理消息,而不是在您想忽略消息时取消订阅/订阅。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM