[英]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.