python - 为什么在 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
解决方案
将调用移动到subscribe
回调publish
内部,on_connect
然后您可以确保连接成功,然后再尝试订阅主题并发布消息。
如果经纪人有问题,其他任何事情都会失败。
推荐阅读
- iis - 每个请求的 Kerberos 挑战
- go - 如何使用 Go 语言从 bitbucket 上的远程存储库中获取文件
- html - 框架集不能在 EDGE 中运行,但运行良好 Mozilla/IE
- python - 通过make启动时,有什么方法可以查看shell脚本的输出,对于SAM
- java - 基于存储对象的属性修剪 flink 状态
- c++ - 避免隐式捕获这个?
- c# - Simple.OData.Client 错误:类型上不存在属性“上下文”
- spring-boot - 类星体纤维在线程启动后返回空结果
- java - 来自守护程序的错误响应:在等待连接时取消请求(等待标头时超出 Client.Timeout)
- python - 尝试使用 python AWS CDK 创建空堆栈时返回 JSII 错误