我正在尝试使用Eclipse提供的paho python库连接到Mosquitto服务器以发布和订阅消息。目前,我有Mosquitto守护进程运行,我能够发布和订阅,并且经纪人可以精确指导主题。我的问题是,一旦我尝试使用Paho库,我就可以连接到Mosquitto服务器(经纪人),但我无法接收我订阅的主题。发布者和接收者代码都运行良好但可能有一些我遗漏的东西。如果有人帮助我,我将感激不尽。
我的发布者/订阅者代码如下:
订户:
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();
答案 0 :(得分:1)
您的发布商在尝试发布然后再次断开连接之前不等待连接完成,而无需等待发布完成。
您有2个选项
使用与订阅者相同的模式,并在publish
回调中放置on_connect
以确保连接完成后再尝试发布。
使用Paho库中包含的单一发布short cut功能
e.g。
import paho.mqtt.publish as publish
publish.single("test", "HelloWorld", hostname="localhost")
编辑:
您的订阅者中还有一堆拼写错误
client.on_massage = on_message
应为client.on_message
同样,message
msg
应为pyload
而payload
应为DrawingImage.Drawing