我有一个发布者,它在“ / ex / topicA /”下发送一条消息,而另一个发布者,在“ / ex / topicB /”下向mosquitto代理发送一条消息。
订阅者在“ / ex /#”下连续从经纪人订阅。
现在,由于网络连接不良,主题为“ / ex / topicA”的发布者未将数据发送到mosquitto代理。
现在,paho mqtt订户如何知道哪个发布者没有向mosquitto代理发送数据?
答案 0 :(得分:2)
在基本协议级别上,它们没有。
Pub / Sub消息传递的部分要点是,它完全使产生数据的用户与使用数据的用户脱钩。
订阅者订阅了一个主题,可能永远不会有关于该主题的消息发布,并且他们不必关心哪个发布者发送该消息。同样,发布者将消息发布到某个主题,订阅该主题的许多客户端可能为0。
如果您真的需要通知客户端在线/离线,那么可以使用一些方法来做到这一点。通常的版本是让客户端在连接后立即将保留的消息发布到特定主题。例如client/a/online
值1
。他们应该在连接详细信息中包含“最后遗嘱”消息,如果无意断开连接,这些消息会将0
发布到该主题。他们还将在指示关闭之前手动发布0
。
P.S。虽然在规范中有效,但主题不应该以{{1}}开头,因为这会在一开始在主题树中添加一个空条目,并破坏诸如共享订阅之类的高级功能。