MQTT——取消訂閱報文和斷開鏈接報文

筆者已經把鏈接報文,訂閱報文,發佈報文都講解了完了。而接下來就是取消訂閱報文和斷開鏈接報文。和其餘的報文比較的話,他們顯示很是簡單。甚至筆者以爲能夠沒必要要拿出來說。只要看一下MQTT文檔就沒有什麼不清楚的。爲了完整一點筆者就把他們放在一直了。緩存

取消訂閱報文spa

固定報頭的結構筆者不都說了。主要記得固定報頭的QOS爲1就好了。筆者把官方的列表貼過來了。以下blog

咱們知道固定報頭分三部分,一個是報文類型,一個是報文標示。一個是剩餘長度。取消訂閱報文類型的值爲10。而後咱們看QOS 爲1。對應的二進制爲10100010。Remaining Length爲剩餘長度,一樣子二進制爲八位。因此固定報頭的二進制必定是10100010  xxxxxxxx。文檔

 xxxxxxxx表示剩餘長度的二進制。後面筆者還會抓包來看。二進制

可變報頭裏面就一個消息ID的項。沒有其餘的。im

有效載何裏面存放的是主題列表。就是用於取消訂閱的主題列表。以下d3

筆者不知道到現還有沒有人看不懂這種列表的。Topic Filter爲主題過濾,便是主題名。而byte 1相似這種表示每一元素。好比上面舉列中的Topic Filter是有五元素組成的。後面是每個元素的二進制。客戶端

MQTT 文檔裏面對取消訂閱報文並無特別的要求。也只是刪除的動做作了一些要求。刪除這個訂閱的時候,就必須中止發送任何信息了。同時若是有正在分送中的QOS 1 QOS2的信息就必需要完成才行。固然也能夠分送準備的緩存信息。img

上面咱們看到了取消訂閱報文的QOS爲1。因此會有一個迴應。便是取消訂閱肯定報文(UNSUBACK)。取消訂閱肯定報文(UNSUBACK)只有固定報頭和可變報頭,可變報頭裏面只有一個消息ID的項。沒有什麼可說的。服務端

相關的包

取消訂閱報文

取消訂閱肯定報文

咱們能夠看到取消訂閱報文有多麼的簡單,可是仍是不如斷開鏈接報文來的簡單。由於斷開鏈接報文沒有可變報頭,沒有有效載荷。就一個固定報頭。沒有錯就是一個固定報頭。很少說,筆者把固定報頭的列表貼出來。以下

上面的列表就是斷開鏈接報文的所有。

斷開鏈接報的結構是最簡單的。可是文檔中仍是指出了幾點要注意的。

1)判斷固定報頭中的標示部分必須是0000,若是不是0就斷開鏈接。

2)客戶端不能在經過該鏈接發送任何信息了。

3)服報端要刪除與當前鏈接關聯的未發佈的遺囑消息。同時若是客戶端沒有斷開的話,服務端必須斷開。

斷開鏈接報文

相關文章
相關標籤/搜索