MQTT協議(1)-簡介

前幾天寫了一下MQTT協議實現推送數據傳輸,因此我會不按期的更新一下關注MQTT的知識。服務器

MQTT:

MQTT(Message Queuing Telemetry Transport,消息隊列遙測傳輸)是IBM開發的一個即時通信協議,有可能成爲物聯網的重要組成部分。該協議支持全部平臺,幾乎能夠把全部聯網物品和外部鏈接起來,被用來當作傳感器和制動器(好比經過Twitter讓房屋聯網)的通訊協議。微信

MQTT特色

MQTT協議是爲大量計算能力有限,且工做在低帶寬、不可靠的網絡的遠程傳感器和控制設備通信而設計的協議,它具備如下主要的幾項特性:網絡

1.使用發佈/訂閱消息模式,提供一對多的消息發佈,解除應用程序耦合;測試

2.對負載內容屏蔽的消息傳輸;ui

3.使用 TCP/IP 提供網絡鏈接;spa

4.有三種消息發佈服務質量:開放源代碼

「至多一次」,消息發佈徹底依賴底層 TCP/IP 網絡。會發生消息丟失或重複。這一級別可用於以下狀況,環境傳感器數據,丟失一次讀記錄無所謂,由於不久後還會有第二次發送。

「至少一次」,確保消息到達,但消息重複可能會發生。

「只有一次」,確保消息到達一次。這一級別可用於以下狀況,在計費系統中,消息重複或丟失會致使不正確的結果。

5.小型傳輸,開銷很小(固定長度的頭部是 2 字節),協議交換最小化,以下降網絡流量;設計

6.使用 Last Will 和 Testament 特性通知有關各方客戶端異常中斷的機制;
MQTT特徵原理代理

實現MQTT協議須要:客戶端和服務器端 code

MQTT協議有三種身份:發佈者(Pushlish)、代理(Broker)、訂閱者(Subscribe)

MQTT的消息分爲:主題(Topic)和負載(payload)兩部分

Topic,能夠理解爲消息的類型,訂閱者Subscribe以後,就會收到該主題的消息內容(payload)。

payload,能夠理解爲消息的內容,是指訂閱者具體的使用內容

消息類型:

CONNECT:客戶端鏈接到MQTT代理

CONNACK:鏈接確認

PUBLISH:新發布消息

PUBACK:新發布消息確認,是QoS 1給PUBLISH消息的回覆

PUBREC:QoS 2消息流的第一部分,表示消息發佈已記錄

PUBREL:QoS 2消息流的第二部分,表示消息發佈已釋放

PUBCOMP:QoS 2消息流的第三部分,表示消息發佈完成

SUBSCRIBE:客戶端訂閱某個主題

SUBACK:對於SUBSCRIBE消息的確認

UNSUBSCRIBE:客戶端終止訂閱的消息

UNSUBACK:對於UNSUBSCRIBE消息的確認

PINGREQ:心跳

PINGRESP:確認心跳

DISCONNECT:客戶端終止鏈接前優雅地通知MQTT代理

MQTT應用

經過MQTT協議,目前已經擴展出了數十個MQTT服務器端程序,能夠經過PHP,JAVA,Python,C,C#等系統語言來向MQTT發送相關消息。

此外,國內不少企業都普遍使用MQTT做爲Android手機客戶端與服務器端推送消息的協議。其中Sohu,Cmstop手機客戶端中均有使用到MQTT做爲消息推送消息。據Cmstop主要負責消息推送的高級研發工程師李文凱稱,隨着移動互聯網的發展,MQTT因爲開放源代碼,耗電量小等特色,將會在移動消息推送領域會有更多的貢獻,在物聯網領域,傳感器與服務器的通訊,信息的收集,MQTT均可以做爲考慮的方案之一。在將來MQTT會進入到咱們生活的各各方面。

下一篇文章總結一下鏈接百度MQTT服務器並實如今線測試。
歡迎你們關注個人微信公衆號:

相關文章
相關標籤/搜索