簡體   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