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 将指示连接是否已断开。