我在Python2.7中使用paho-mqtt 1.2来收听代理在订阅特定主题后广播的消息。paho-mqtt订阅支票订阅状态
它初始化像
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我可以阅读有关认购()函数
该函数返回一个元组(结果, mid),结果为 MQTT_ERR_SUCCESS表示成功或(MQTT_ERR_NO_CONN,无) 客户端当前未连接。 mid是 订阅请求的消息ID。通过检查on_subscribe() 回调中的中间参数(如果已定义),可以使用中间值跟踪订阅 请求。
我现在试图检索有关订阅的状态,即如果我订阅了VALID主题。在我的理解中,如果主题的格式无效,则subscribe()函数仅返回错误代码。但是我想提取信息,如果我订阅了实际播出的话题。
到目前为止,无论我订阅哪个主题(有效或无效),我都会收到一个包含订阅ID的on_subscribe()调用。
所以这意味着如果我有一个话题,每天只发送一次消息,而且我的话题订阅有一个错字,我不会注意到这一天? – HeXor
假设没有持久订阅的新客户端和消息正在发布而没有设置保留标志,那么只有在发布消息时才会收到该消息 – hardillb
由于我只配置了监听者,而不是代理,所以我不知道'retain = True'选项,但是这肯定会给我一个处理这个问题的方法,谢谢! – HeXor