paho-mqtt订阅检查订阅状态

时间:2017-06-29 08:58:51

标签: python-2.7 mqtt paho

在订阅特定主题后,我在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),其结果为 MQTT_ERR_SUCCESS指示成功或(MQTT_ERR_NO_CONN,无)如果 客户端目前尚未连接。 mid是的消息ID 订阅请求。中间值可用于跟踪订阅 通过检查on_subscribe()中的中间参数请求 回调如果已定义。

我现在正在尝试检索有关订阅的状态,即我是否订阅了VALID主题。据我所知,如果主题格式无效,subscribe()函数只返回错误代码。但是如果我订阅了一个实际播放的主题,我想提取信息。

到目前为止,无论我订阅哪个主题(有效或无效),我都会收到包含订阅ID的on_subscribe()调用。

1 个答案:

答案 0 :(得分:1)

您可以随时订阅所有(语法上正确的)主题,因为将来某个时候可能会向其发布消息。

在MQTT中,没有必要在使用之前声明主题,代理将允许您订阅消息从未(并且可能永远不会)发布消息的主题。

主题仅在消息发布到该主题时才存在。

了解实际使用的主题的唯一方法是订阅它们并查看是否有消息出现。