一、訂閱主題
這個就是客戶端發送給服務端要求訂閱指定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.有效載荷
沒有有效載荷。
------------恢復內容結束------------