MQTT如何知道Broker状态
MQTT How to know the Broker Status
在 python 中带有 MQTT 的 Web 应用程序中(使用 paho-mqtt lib)我想知道是否有办法实时获取代理状态,因为我找到的唯一方法是将变量 "rc" 存储到方法 on_connect 中,但它更像是一个 client/connection 状态。
编辑 1:阅读 mosquitto 代理文档后,我发现您可以订阅 '$SYS/broker/connection/#'
如果连接正常,它应该返回 1,如果连接断开则返回 0。但是当我这样做时:
subscribe.callback(self.message_callback, '$SYS/broker/connection/#', port = port, hostname=broker, auth=authentication, protocol=client.MQTTv31, tls=TLS)
无法获取负载和主题此消息,尽管我正在执行完全相同的命令以从我的传感器获取消息,除了主题是 '#'
并且它运行良好。
有谁知道为什么吗?
无法从客户端轮询到代理的连接状态。
当与代理的连接断开时,应调用 on_disconnect
回调。
这应该在 keep alive 超时时启动,但也是发布失败的结果(如果您尝试在超时到期之前发布数据)。
此外,调用 publish 命令的 rc
将指示连接是否已断开。
在 python 中带有 MQTT 的 Web 应用程序中(使用 paho-mqtt lib)我想知道是否有办法实时获取代理状态,因为我找到的唯一方法是将变量 "rc" 存储到方法 on_connect 中,但它更像是一个 client/connection 状态。
编辑 1:阅读 mosquitto 代理文档后,我发现您可以订阅 '$SYS/broker/connection/#'
如果连接正常,它应该返回 1,如果连接断开则返回 0。但是当我这样做时:
subscribe.callback(self.message_callback, '$SYS/broker/connection/#', port = port, hostname=broker, auth=authentication, protocol=client.MQTTv31, tls=TLS)
无法获取负载和主题此消息,尽管我正在执行完全相同的命令以从我的传感器获取消息,除了主题是 '#'
并且它运行良好。
有谁知道为什么吗?
无法从客户端轮询到代理的连接状态。
当与代理的连接断开时,应调用 on_disconnect
回调。
这应该在 keep alive 超时时启动,但也是发布失败的结果(如果您尝试在超时到期之前发布数据)。
此外,调用 publish 命令的 rc
将指示连接是否已断开。