天天看點

mqtt入門(一):簡介

前言

  • 該筆記學習自mqtt
  • ​​參考1​​
  • ​​參考2​​

簡介

  • 消息發送者先将消息發送伺服器的主題,主題也可以了解為通道,消息接收者通過主題接收消息
  • mqtt入門(一):簡介
  • 消息服務品質
QoS0 至多一次:消息發送者隻發送一次消息,消息接收者沒有接到也不會再發了
QoS1 至少一次:消息發送者持續不斷的發送消息,消息接收者接收到了也還會再發
QoS2 隻有一次:消息發送者隻發送一次,且確定這一次被消息接收者接收到      
  • 概念
  • mqtt入門(一):簡介
  • 主題
消息發送者和消息訂閱者會通過主題進行消息通信
例如 char/aaa/12 就是三個層級的主題
例如消息接收者通過主題 char/+/bbb 訂閱消息,那麼他就可以訂閱到 char/aaa/bbb 或者 char/ccc/bbb 發送的消息(加号表示通配符,即任意字元串)
例如消息接收者通過主題 char/# 訂閱消息,那麼他就可以訂閱到 char/aaa/bbb 或者 char/ccc/ddd 發送的消息 (井号表示通配符,即任意層級的字元)

帶有通配符的主題隻能放在消息接收者這一方      
  • mqtt資料包結構
固定封包頭
可變封包頭
封包體      
  • 固定封包頭
分為2個部分,byte1和byte2
byte1包括mqtt資料包類型和類型的具體辨別
byte2主要是可變封包頭和封包體的長度      
mqtt入門(一):簡介
  • mqtt資料包類型如下
  • mqtt入門(一):簡介
  • 不同mqtt資料包類型的具體辨別如下
  • mqtt入門(一):簡介
  • QoS
訂閱者收到消息的QoS級别取決于釋出消息的QoS和訂閱消息的QoS      
mqtt入門(一):簡介
mqtt入門(一):簡介
mqtt入門(一):簡介
mqtt入門(一):簡介
  • byte0
byte0可以為0或1,若為1則表示這條消息為保留消息
保留消息表示,如果有新的訂閱者訂閱該主題,那麼也可以接收到最近的消息      
  • 可變頭
  • mqtt入門(一):簡介
  • 協定名
  • mqtt入門(一):簡介
  • 協定版本号
  • mqtt入門(一):簡介
  • clean session
  • mqtt入門(一):簡介
  • will flag
設定為1表示會存儲遺言消息,設定為0則不會存儲      
  • will QoS
表示遺言消息的消息品質      
  • will reation
遺言消息是否是一個保留消息      
  • username flag 和passwor flag
表示消息負載中是否去攜帶使用者名或密碼,為1時則攜帶      
  • 心跳時長
用戶端會給服務端發送ping req表明用戶端還活着,服務端會給用戶端會ping resq表明服務端還活着

心跳時長表示用戶端和服務端之間兩次資料包廂隔的最大時長
超過心跳時長時,會進行一次心跳檢查,(ping req和ping resp)
當服務端在心跳時長的1.5倍時間内沒有接收到用戶端發送的資料包,則會認為用戶端掉線了,就會主動斷開用戶端
當用戶端一段時間内沒有接收到服務端的的ping resp,則會認為服務端掉線了,同樣也會主動斷開連接配接      
  • 連接配接确認辨別
都必須設定為0,表示這是一個session present      

-連接配接傳回碼

表示連接配接失敗的原因      
  • 主題名稱
表示往那個主題中釋出消息      
  • message id
消息的辨別      
  • 封包體

繼續閱讀