[英]Can i subscribe to a topic after i started loop_forever() in paho_mqtt?
在執行 loop_forever() 函數之前,我是否需要訂閱我感興趣的所有主題? 例如,在 MQTT 客戶端的生命周期內以某種方式動態添加更多訂閱。
我發現這是可能的。 我實現了一個隱藏 mqtt 內容的類。 在構造函數中,我連接到代理並使用單獨的線程啟動 loop_forever()。 然后該類訂閱一些主題並為每個主題注冊一個回調,這些回調從 on_message 調用。
c = comm("localhost")
c.register_handler("topic1", first_handler)
c.register_handler("topic2", second_handler)
class comm:
def __init__(self, broker_address):
self.client = mqtt.Client("")
self.client.on_message = self.on_message
self.callbacks = dict()
self.client.connect(broker_address)
threading.Thread(target=self.__run, daemon=True).start()
def __run(self):
self.client.loop_forever()
def on_message(self, client, userdata, msg):
self.callbacks[msg.topic](jsonpickle.decode(msg.payload))
def register_handler(self, topic: str, handler: Callable[[Dict], None]):
self.callbacks[topic] = handler
self.client.subscribe(topic)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.