paho mqtt经纪人如何知道哪个发布者已断开连接?

时间:2019-08-07 09:44:57

标签: mqtt mosquitto paho

我有一个发布者,它在“ / ex / topicA /”下发送一条消息,而另一个发布者,在“ / ex / topicB /”下向mosquitto代理发送一条消息。

订阅者在“ / ex /#”下连续从经纪人订阅。

现在,由于网络连接不良,主题为“ / ex / topicA”的发布者未将数据发送到mosquitto代理。

现在,paho mqtt订户如何知道哪个发布者没有向mosquitto代理发送数据?

1 个答案:

答案 0 :(得分:2)

在基本协议级别上,它们没有。

Pub / Sub消息传递的部分要点是,它完全使产生数据的用户与使用数据的用户脱钩。

订阅者订阅了一个主题,可能永远不会有关于该主题的消息发布,并且他们不必关心哪个发布者发送该消息。同样,发布者将消息发布到某个主题,订阅该主题的许多客户端可能为0。

如果您真的需要通知客户端在线/离线,那么可以使用一些方法来做到这一点。通常的版本是让客户端在连接后立即将保留的消息发布到特定主题。例如client/a/online1。他们应该在连接详细信息中包含“最后遗嘱”消息,如果无意断开连接,这些消息会将0发布到该主题。他们还将在指示关闭之前手动发布0

P.S。虽然在规范中有效,但主题不应该以{{1​​}}开头,因为这会在一开始在主题树中添加一个空条目,并破坏诸如共享订阅之类的高级功能。