在不订阅python Paho MQTT库的情况下接收消息

时间:2020-09-03 18:04:29

标签: python mqtt paho

我正在一个项目中,我需要两台计算机才能通过MQTT进行通信。为了测试它,我创建了这段代码。我在笔记本电脑上运行了这段代码:

import paho.mqtt.client as mqtt
import time
def on_connect(client,userdata,flags,rc):
    if rc == 0:
        print("connected OK")
    else:
        print("bad connection Returned code=",rc)
    client.subscribe('test/message')
def on_subscribe():
    print('hello')
def on_message(client,userdata,msg):
    message=str(msg.payload.decode())
    print(message)
broker = "10.49.12.253"
client = mqtt.Client("Get")
client.on_subscribe = on_subscribe
client.on_connect = on_connect
client.on_message = on_message
print("Connecting to broker ",broker)
client.connect(broker)
client.loop_forever()

从另一台计算机发布消息后,我得到以下输出:

Connecting to broker  10.49.12.253
connected OK
Hello, world

我从中发送消息的计算机也是代理。我很困惑,因为从未调用过on_subscribe函数,而且在我仍然收到消息时我也不明白为什么。这是怎么回事?

1 个答案:

答案 0 :(得分:1)

问题是您的on_subscribe()函数缺少所需数量的参数。应该是:

...
def on_subscribe(client, userdata, mid, granted_qos):
  print("hello")
...

Paho在try / except块中触发了回调,并吞没了错误的签名可能引发的错误消息。

文档:https://www.eclipse.org/paho/index.php?page=clients/python/docs/index.php#on-subscribe