Paho python客户端与Mosquitto Broker无法正常工作

时间:2017-06-23 20:13:34

标签: python-2.7 python-3.x mqtt mosquitto paho

我正在尝试使用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();

1 个答案:

答案 0 :(得分:1)

您的发布商在尝试发布然后再次断开连接之前不等待连接完成,而无需等待发布完成。

您有2个选项

  1. 使用与订阅者相同的模式,并在publish回调中放置on_connect以确保连接完成后再尝试发布。

  2. 使用Paho库中包含的单一发布short cut功能

  3. e.g。

     import paho.mqtt.publish as publish
    
     publish.single("test", "HelloWorld", hostname="localhost")
    

    编辑:

    您的订阅者中还有一堆拼写错误

    client.on_massage = on_message
    

    应为client.on_message

    同样,message msg应为pyloadpayload应为DrawingImage.Drawing