Mqtt客户端如何知道另一个客户端是否已连接
Mqtt How a client can get to know that another client is connected or not
大家好,我的问题是我需要保持设备(客户端)在线与否的状态。
我正在通过客户端 ID 连接,通过订阅那里的主题,我可以知道设备已断开连接,但如果他们再次连接,我如何检查他们是否再次连接。
简短的回答是您不需要(在协议级别)。
发布者和订阅者完全不知道对方,消息被发送到主题而不是特定的订阅客户端。
稍长的版本:
您可以对保留的消息和 LWT(遗嘱和遗嘱)做一些事情
例如
每个客户端向以下主题发布保留消息
online/<clientID>
连接时负载为 true
。它还设置了 LWT,如果客户端因网络故障而断开连接,它将发布 false
的有效负载。如果客户端完全断开连接,那么它将需要发布 false
有效负载,因为它是离线前的最后一个操作。
要判断客户端是否在线,您可以订阅 online/+
的通配符主题,然后检查主题的最后一部分的 clientid 和有效负载的状态。
大家好,我的问题是我需要保持设备(客户端)在线与否的状态。
我正在通过客户端 ID 连接,通过订阅那里的主题,我可以知道设备已断开连接,但如果他们再次连接,我如何检查他们是否再次连接。
简短的回答是您不需要(在协议级别)。
发布者和订阅者完全不知道对方,消息被发送到主题而不是特定的订阅客户端。
稍长的版本:
您可以对保留的消息和 LWT(遗嘱和遗嘱)做一些事情
例如
每个客户端向以下主题发布保留消息
online/<clientID>
连接时负载为 true
。它还设置了 LWT,如果客户端因网络故障而断开连接,它将发布 false
的有效负载。如果客户端完全断开连接,那么它将需要发布 false
有效负载,因为它是离线前的最后一个操作。
要判断客户端是否在线,您可以订阅 online/+
的通配符主题,然后检查主题的最后一部分的 clientid 和有效负载的状态。