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

How do paho mqtt broker knows which publisher has disconnected?

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

订阅者在“/ex/#”下连续向代理订阅。

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

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

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

Pub/Sub 消息传递的部分要点在于它完全分离了生成数据的用户与使用它的用户。

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

如果您真的需要通知客户端 on/off 行,那么有一些技术可以做到这一点。通常的版本是让客户端在连接后立即向特定主题发布保留消息。例如client/a/online1。他们应该在连接详细信息中包含 Last Will and Testament 消息,以便在意外断开连接时将 0 发布到该主题。他们还会在指示关闭之前手动发布 0

P.S。虽然在规范中有效,但主题不应以 / 开头,因为这会在主题树的开头添加一个空条目并破坏共享订阅等高级功能。