Mqtt paho客户如何知道网桥连接的状态?

Mqtt paho客户如何知道网桥连接的状态?,mqtt,mosquitto,Mqtt,Mosquitto,我的董事会上有一个远程代理(cloudmqtt)和一个本地代理。两者作为桥梁连接。我有一个泛美卫生组织客户连接到当地经纪人。我想知道bridge的状态以便发布消息。我知道我可以在不知道状态的情况下将消息发布到本地代理,代理将负责。但我想设计我的应用程序,就像我只在网桥打开时发布消息一样 我正在使用C和mosquitto broker v1.6中的paho客户端库 以下是我的conifg文件: pid_file /var/run/mosquitto.pid persistence true per

我的董事会上有一个远程代理(cloudmqtt)和一个本地代理。两者作为桥梁连接。我有一个泛美卫生组织客户连接到当地经纪人。我想知道bridge的状态以便发布消息。我知道我可以在不知道状态的情况下将消息发布到本地代理,代理将负责。但我想设计我的应用程序,就像我只在网桥打开时发布消息一样

我正在使用C和mosquitto broker v1.6中的paho客户端库

以下是我的conifg文件:

pid_file /var/run/mosquitto.pid
persistence true
persistence_location /var/lib/mosquitto/
log_dest file /var/log/mosquitto/mosquitto.log
log_timestamp true
log_timestamp_format %Y-%m-%dT%H:%M:%S
log_type all

user root

connection cloudmqtt 
address xxxx.cloudmqtt.com:13287
remote_username xxxxxxx
start_type automatic
try_private true
remote_password xxxxxx
notifications true
notification_topic /broker/connection/state 
restart_timeout 20
max_queued_messages 0
topic # both 2

简单的回答是,您不能在纯MQTT协议级别或特定于Paho客户机(并且您不应该关心您提到的原因)


说到这里,您可以从mosquitto上的
$SYS/broker/connection/#
主题树中获得关于网桥状态的消息。要启用此功能,您需要在网桥配置中设置
通知true
标志。配置网桥的文档是

,所以实际上我添加了通知主题为/broker/connection/state。通知为真。现在,我在客户端订阅了相同的主题,但没有收到任何消息。首先,不要以
/
开头主题,这是一种非常糟糕的做法。第二,为什么不把它作为第一个测试的默认值呢,现在我删除了通知主题,并获得了桥接器的状态:消息到达主题:$SYS/broker/connection/mdm9607.cloudmqtt/state Message:1消息到达主题:$SYS/broker/connection/mdm9607.cloudmqtt/state Message:0消息到达主题:$SYS/broker/connection/mdm9607.cloudmqtt/state Message:1但为什么定义的主题上没有相同的消息?任何输入。