您好,登錄后才能下訂單哦!
本篇文章為大家展示了如何關閉Client到Broker的連接,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。
接下來看一下如何關閉Client 到 Broker 的連接。
Client 主動關閉連接的流程非常簡單,只需要向 Broker 發送一個 DISCONNECT 數據包就可以了。DISCONNECT 數據包沒有可變頭(Variable header)和消息體(Payload)。在 Client 發送完 DISCONNECT 之后,就可以關閉底層的 TCP 連接了,不需要等待 Broker 的回復(Broker 也不會對 DISCONNECT 數據包回復)。
這里讀者可能有一個疑問,為什么需要在關閉 TCP 連接之前,發送一個和 Broker 沒有交互的 DISCONNECT 數據包,而不是直接關閉底層的 TCP 連接?
這里涉及到 MQTT 協議的一個特性,Broker 需要判斷 Client 是否正常地斷開連接。
當 Broker 收到 Client 的 DISCONNECT 數據包的時候,它認為 Client 是正常地斷開連接,那么它會丟棄當前連接指定的遺愿消息(Will Message)。如果 Broker 檢測到 Client 連接丟失,但又沒有收到 DISCONNECT 消息包,它會認為 Client 是非正常斷開連接,就會向在連接的時候指定的遺愿主題(Will Topic)發布遺愿消息(Will Message)
MQTT 協議規定 Broker 在沒有收到 Client 的 DISCONNECT 數據包之前都應該保持和 Client 連接,只有 Broker 在 Keep Alive 的時間間隔里,沒有收到 Client 的任何 MQTT 數據包的時候會主動關閉連接。一些 Broker 的實現在 MQTT 協議上做了一些拓展,支持 Client 的連接管理,可以主動地斷開和某個 Client 的連接。
上述內容就是如何關閉Client到Broker的連接,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。