Paho python客户端无法正常使用Mosquitto Broker
我想使用由Eclipse提供的paho python库连接到Mosquitto服务器以发布和订阅消息。目前,我有Mosquitto守护进程运行,并且我能够发布和订阅以及经纪人精确地指导主题。我的问题是一旦我尝试使用Paho图书馆,我可以连接到Mosquitto服务器(经纪人),但我无法接收我订阅的主题。发布者和接收者的代码都能正常工作,但可能有一些我缺少的东西。如果有人帮助我,我会很感激。Paho python客户端无法正常使用Mosquitto Broker
我的发布/订阅代码如下:
认购人:
import paho.mqtt.client as mqtt
def on_connect(client, userdata, flags, rc):
print("Connected with result code "+ str(rc))
client.subscribe("test")
def on_message(client, userdata, msg):
print("Recieved message " + str(msg.payload) + " " + msg.topic + "Qos= " + str(msg.qos))
client.disconnect()
client = mqtt.Client()
client.connect("localhost", 1883, 60)
client.on_connect = on_connect
client.on_massage = on_message
client.loop_forever()
出版商:
import paho.mqtt.client as mqtt
client = mqtt.Client()
client.connect("localhost", 1883, 60)
client.publish("test", "Hello World!")
client.disconnect();
您的发布者不是等待连接在尝试pu之前完成然后再次断开连接,而无需等待发布完成。
您有2个选项
使用相同的模式用户,并把
publish
在on_connect
回调,以确保连接是试图在发布之前完成。使用单个发布short cut函数被包括在PAHO库
例如
import paho.mqtt.publish as publish
publish.single("test", "HelloWorld", hostname="localhost")
编辑:
另外,在您的用户一堆错字的的
client.on_massage = on_message
应该client.on_message
而且所有message
应该是msg
和pyload
应
非常感谢你的回答。让我以另一种方式告诉你这个问题。我的发布者和您提供的快捷方式都能够发布他们的消息。我的问题是,当我订阅从我的Ubuntu终端使用“mosquitto_sub”命令检索到的邮件时,我可以检索它,但上面的订户无法从代理接收它。这现在让我很困惑。 –
在你的用户代码中输入错字'client.on_massage'应该是'client.on_message'(你也应该在调用'connect'之前设置回调) – hardillb
真是太遗憾了。我为你的时间道歉。非常感谢。问题解决了。 –
错字 - 'client.on_massage = on_message'应该是'client.on_message = on_message' – markroxor