paho-mqtt subscribe 查看订阅状态

paho-mqtt subscribe check subscription status

我在 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() 函数

函数returns一个元组(result,mid),其中result为 MQTT_ERR_SUCCESS 表示成功或 (MQTT_ERR_NO_CONN, None) 如果 客户端当前未连接。 mid 是消息 ID 订阅请求。中间值可用于跟踪订阅 通过检查 on_subscribe() 中的中间参数来请求 如果定义了回调。

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

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

您始终可以订阅所有(语法正确的)主题,因为消息可能会在将来的某个时候发布到它。

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

主题仅在向该主题发布消息时有效。

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