【发布时间】:2017-06-29 08:58:51
【问题描述】:
我在python2.7中使用paho-mqtt 1.2在订阅特定主题后收听经纪人广播的消息。
它的初始化是这样的
import paho.mqtt.client as mqtt #python mqtt package
# initialize MQTT client
mqttc = mqtt.Client()
# register listener functions
mqttc.on_connect = on_connect
mqttc.on_subscribe = on_subscribe
mqttc.on_message = on_message
# connect to MQTT broker
mqttc.connect(<IP>, <PORT>, <KEEPALIVE_INTERVAL>)
# subscribe a topic to the broker
subscr = mqttc.subscribe(<TOPIC_NAME>, 0)
使用自定义函数
def on_connect(client, userdata, flags, rc):
print "connected"
def on_subscribe(client, userdata, mid, granted_qos):
print "subscribed"
def on_message(client, userdata, msg):
print "message received"
从 API 我可以了解 subscribe() 函数
函数返回一个元组(result, mid),其中result为 MQTT_ERR_SUCCESS 表示成功或 (MQTT_ERR_NO_CONN, None) 如果 客户端当前未连接。 mid 是消息的 ID 订阅请求。中间值可用于跟踪订阅 通过检查 on_subscribe() 中的 mid 参数来请求 如果已定义,则回调。
我现在正在尝试检索有关订阅的状态,即如果我订阅了 VALID 主题。据我了解,如果主题格式无效,则 subscribe() 函数只会返回错误代码。但如果我订阅了一个实际广播的主题,我想提取信息。
到目前为止,我收到了一个包含订阅 ID 的 on_subscribe() 调用,无论我订阅的是哪个主题(有效或无效)。
【问题讨论】:
标签: python-2.7 mqtt paho