MQTT協議(四)——控制報文之訂閱主題(SUBSCRIBE)、訂閱確認(SUBACK)、取消訂閱(UNSUBSCRIBE)和取消訂閱確認(UNSUBACK)


一、訂閱主題

這個就是客戶端發送給服務端要求訂閱指定topic的報文了,在服務端可以設定是否支持通配符。

1.報文頭

報文類型是8,其他啥也沒有。

2.可變頭

里面有一個報文標識符,前文講過,只要需要服務端答復的,都必須有這個標識符,不然服務端不知道針對哪個報文進行答復。

示例:假設報文標識符是10

3有效載荷

主要包含兩個東西,一個是你需要訂閱的topic,這里面只是通配符標識。另一個是qos,這個主要是為了讓服務端給你發publish報文的時候用的,publish上文說過必須要有這個東西。

示例:

 

 可以看出,每個訂閱主題,都可以讓服務端發給你不同安全等級的publish報文。

二、訂閱確認

服務端在收到客戶端的訂閱報文后,會根據報文變頭里帶着的報文標識符,返回一個確認報文以告訴客戶端是否訂閱成功。

服務端發送SUBACK報文給客戶端,用於確認它已收到並且正在處理SUBSCRIBE報文。

SUBACK報文包含一個返回碼清單,它們指定了SUBSCRIBE請求的每個訂閱被授予的最大QoS等級。

1.固定頭

報文類型是9,其他沒啥。

2.可變頭

無內容

3.有效載荷

 

 每個字節代表訂閱報文中一個topic被允許的最大qos值。也就是說服務端會告訴你,你這個訂閱的主題,最多能給你的服務質量等級是多少。

 三、取消訂閱

客戶端告訴服務端,我不訂閱某個主題了。

1.固定頭

控制報文類型是10,固定報頭的第3,2,1,0位是保留位且必須分別設置為0,0,1,0,其他的都要斷開連接。

2.可變頭

沒啥。

3.有效載荷

 

 

 取消訂閱報文必須有有效載荷,有效載荷里面存的就是你想取消訂閱的主題。

 服務器收到了取消訂閱報文必須給一個答復報文,答復報文的報文標識符必須跟取消訂閱的一樣。

四、取消訂閱確認

1.固定頭

控制類型11。

2.可變頭

里面有取消訂閱的報文標識符。

3.有效載荷

 沒有有效載荷。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

------------恢復內容結束------------


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM