首页 > 解决方案 > 为什么在 on_connect 之前调用 on_publish 回调?

问题描述

我编写的代码的输出是

on_publish
('Connected', '0')
('message received ', 'test1234')
('message topic=', u'paho/test')

代码如下:

import paho.mqtt.client as mqtt  
import time import json

def on_connect(client,data,flag,rc):
    print("Connected",str(rc))

def on_publish(client,data,msg):
    print("on_publish")

def on_message(client, userdata, message):
    print("message received " ,str(message.payload.decode("utf-8")))
    print("message topic=",message.topic)

broker_address="iot.eclipse.org"

client = mqtt.Client()

client.on_connect=on_connect
client.on_publish=on_publish 
client.on_message=on_message 

client.connect(broker_address,1883) #connect to broker 
client.loop_start()  
data="test1234" 
client.subscribe("paho/test") 
client.publish("paho/test",data) 
time.sleep(4) # wait 
client.loop_stop() #stop the loop

标签: pythonmqttpaho

解决方案


将调用移动到subscribe回调publish内部,on_connect然后您可以确保连接成功,然后再尝试订阅主题并发布消息。

如果经纪人有问题,其他任何事情都会失败。


推荐阅读