0
大家好我的問題是我需要保持設備(客戶端)狀態,因爲他們在線或不在線。Mqtt客戶端如何知道另一個客戶端是否連接
我通過客戶端ID連接,從訂閱有主題我可以知道該設備斷開連接,但如果他們再次連接,我該如何檢查他們再次連接。
大家好我的問題是我需要保持設備(客戶端)狀態,因爲他們在線或不在線。Mqtt客戶端如何知道另一個客戶端是否連接
我通過客戶端ID連接,從訂閱有主題我可以知道該設備斷開連接,但如果他們再次連接,我該如何檢查他們再次連接。
簡短的答案是你沒有(在協議級別)。
發佈者和訂閱者完全不知道對方,消息被髮送到主題而不是特定的訂閱客戶端。
稍長版本:
你就可以用保留的消息和LWT(最後遺囑&約)
例如東西
每個客戶端發佈一個已保留消息的以下主題
online/<clientID>
隨着true
淨荷當它連接。如果客戶端因網絡故障而斷開連接,它還將設置LWT,該公開負載爲false
。如果客戶端乾淨地斷開連接,那麼它將需要發佈false
有效負載,因爲它是在離線之前的最後一個動作。
要判斷客戶端是否在線,請訂閱online/+
的通配符主題,然後檢查該主題的最後一部分是否是clientid以及該狀態的有效負載。