enum msgTypes
{
CONNECT = 1, CONNACK, PUBLISH, PUBACK, PUBREC, PUBREL,
PUBCOMP, SUBSCRIBE, SUBACK, UNSUBSCRIBE, UNSUBACK,
PINGREQ, PINGRESP, DISCONNECT
};
1 CONNECT – 連接服務端
客戶端到服務端的網絡連接建立後,客戶端發送給服務端的第一個報文必須是CONNECT報文 [MQTT-3.1.0-1]。
在一個網絡連接上,客戶端只能發送一次CONNECT報文。服務端必須將客戶端發送的第二個CONNECT報文當作協議違規處理並斷開客戶端的連接 [MQTT-3.1.0-2]。有關錯誤處理的信息請查看4.8節。
有效載荷包含一個或多個編碼的字段。包括客戶端的唯一標識符,Will主題,Will消息,用戶名和密碼。除了客戶端標識之外,其它的字段都是可選的,基於標誌位來決定可變報頭中是否需要包含這些字段。
2 CONNACK – 確認連接請求
服務端發送CONNACK報文響應從客戶端收到的CONNECT報文。服務端發送給客戶端的第一個報文必須是CONNACK [MQTT-3.2.0-1]。
如果客戶端在合理的時間內沒有收到服務端的CONNACK報文,客戶端應該關閉網絡連接。合理 的時間取決於應用的類型和通信基礎設施。
3 PUBLISH – 發佈消息
PUBLISH控制報文是指從客戶端向服務端或者服務端向客戶端傳輸一個應用消息。
4 PUBACK –發佈確認
PUBACK報文是對QoS 1等級的PUBLISH報文的響應。
5 PUBREC – 發佈收到(QoS 2,第一步)
PUBREC報文是對QoS等級2的PUBLISH報文的響應。它是QoS 2等級協議交換的第二個報文。
6 PUBREL – 發佈釋放(QoS 2,第二步)
PUBREL報文是對PUBREC報文的響應。它是QoS 2等級協議交換的第三個報文。
7 PUBCOMP – 發佈完成(QoS 2,第三步)
PUBCOMP報文是對PUBREL報文的響應。它是QoS 2等級協議交換的第四個也是最後一個報文。
8 SUBSCRIBE - 訂閱主題
客戶端向服務端發送SUBSCRIBE報文用於創建一個或多個訂閱。每個訂閱註冊客戶端關心的一個或多個主題。爲了將應用消息轉發給與那些訂閱匹配的主題,服務端發送PUBLISH報文給客戶端。SUBSCRIBE報文也(爲每個訂閱)指定了最大的QoS等級,服務端根據這個發送應用消息給客戶端。
9 SUBACK – 訂閱確認
服務端發送SUBACK報文給客戶端,用於確認它已收到並且正在處理SUBSCRIBE報文。
SUBACK報文包含一個返回碼清單,它們指定了SUBSCRIBE請求的每個訂閱被授予的最大QoS等級.
10 UNSUBSCRIBE –取消訂閱
客戶端發送UNSUBSCRIBE報文給服務端,用於取消訂閱主題。
11 UNSUBACK – 取消訂閱確認
服務端發送UNSUBACK報文給客戶端用於確認收到UNSUBSCRIBE報文。
12 PINGREQ – 心跳請求
客戶端發送PINGREQ報文給服務端的。用於:
- 在沒有任何其它控制報文從客戶端發給服務的時,告知服務端客戶端還活着。
- 請求服務端發送 響應確認它還活着。
- 使用網絡以確認網絡連接沒有斷開
13 PINGRESP – 心跳響應
服務端發送PINGRESP報文響應客戶端的PINGREQ報文。表示服務端還活着。
保持連接(Keep Alive)處理中用到這個報文
14 DISCONNECT –斷開連接
DISCONNECT報文是客戶端發給服務端的最後一個控制報文。表示客戶端正常斷開連接。