MQTT--物联网(IoT)消息推送协议
簡介
MQTT(Message Queuing Telemetry Transport,消息隊(duì)列遙測傳輸協(xié)議)是一種構(gòu)建于TCP/IP協(xié)議的"輕量級"消息傳輸協(xié)議,它基于發(fā)布/訂閱(publish/subscribe)模式,由IBM在1999年發(fā)布。對于需要較小代碼占用空間或網(wǎng)絡(luò)帶寬有限的遠(yuǎn)程連接非常有用,是專為受限設(shè)備和低帶寬、高延遲或不可靠的網(wǎng)絡(luò)而設(shè)計(jì)。
基于這些優(yōu)點(diǎn),MQTT已成為物聯(lián)網(wǎng)智能家居的首選傳輸協(xié)議,還被用于通過衛(wèi)星鏈路與代理通信的傳感器、與醫(yī)療服務(wù)提供者的撥號連接,以及一系列家庭自動(dòng)化和小型設(shè)備場景。并且它也是移動(dòng)應(yīng)用的理想選擇,因?yàn)樗w積小,功耗低,數(shù)據(jù)包最小,并且可以有效地將信息分配給一個(gè)或多個(gè)接收器。
特點(diǎn)
- 輕量、簡單、網(wǎng)絡(luò)開銷小、開放和易于實(shí)現(xiàn)
- 輕量級,
- 發(fā)布/訂閱模式,一對多消息發(fā)布
- 基于TCP/IP網(wǎng)絡(luò)連接,提供有序,無損,雙向連接
- 1字節(jié)固定報(bào)頭,2字節(jié)心跳報(bào)文,最小化傳輸開銷和協(xié)議交換,有效減少網(wǎng)絡(luò)流量
- 消息QoS支持,可靠傳輸保證,有三種消息發(fā)布質(zhì)量(Qos):
qos=0:“至多一次”,這一級別會(huì)發(fā)生消息丟失或重復(fù),消息發(fā)布依賴于TCP/IP網(wǎng)絡(luò)
qos=1:“至少一次”,確保消息到達(dá),但消息重復(fù)可能會(huì)發(fā)生
qos=2:“只有一次”,確保消息到達(dá)一次 - 通知機(jī)制,異常中斷時(shí)會(huì)通知雙方
- 支持連續(xù)的會(huì)話控制
- 把傳輸量降到最低以提高傳輸效率
- 允許用戶動(dòng)態(tài)創(chuàng)建主題,零運(yùn)維成本
應(yīng)用場景
MQTT協(xié)議廣泛應(yīng)用于物聯(lián)網(wǎng)、移動(dòng)互聯(lián)網(wǎng)、智能硬件、車聯(lián)網(wǎng)、電力能源等領(lǐng)域。
- 物聯(lián)網(wǎng)M2M通信,物聯(lián)網(wǎng)大數(shù)據(jù)采集
- Android消息推送,WEB消息推送
- 移動(dòng)即時(shí)消息,例如Facebook Messenger
- 智能硬件、智能家具、智能電器
- 車聯(lián)網(wǎng)通信,電動(dòng)車站樁采集
- 智慧城市、遠(yuǎn)程醫(yī)療、遠(yuǎn)程教育
- 電力、石油與能源等行業(yè)市場
協(xié)議實(shí)現(xiàn)方式
實(shí)現(xiàn)MQTT協(xié)議需要客戶端和服務(wù)器端通訊完成,在通訊過程中,MQTT協(xié)議中有三種身份:發(fā)布者(Publish)、代理(Broker)(服務(wù)器)、訂閱者(Subscribe)。其中,消息的發(fā)布者和訂閱者都是客戶端,消息代理是服務(wù)器,消息發(fā)布者可以同時(shí)是訂閱者。
MQTT傳輸?shù)南⒎譃?#xff1a;主題(Topic)和負(fù)載(payload)兩部分:
- Topic,可以理解為消息的類型,訂閱者訂閱(Subscribe)后,就會(huì)收到該主題的消息內(nèi)容(payload);
- payload,可以理解為消息的內(nèi)容,是指訂閱者具體要使用的內(nèi)容。
MQTT客戶端
一個(gè)使用MQTT協(xié)議的應(yīng)用程序或者設(shè)備,它總是建立到服務(wù)器的網(wǎng)絡(luò)連接。客戶端可以:
- 發(fā)布其他客戶端可能會(huì)訂閱的信息;
- 訂閱其它客戶端發(fā)布的消息;
- 退訂或刪除應(yīng)用程序的消息;
- 斷開與服務(wù)器連接;
MQTT服務(wù)器
MQTT服務(wù)器以稱為"消息代理"(Broker),可以是一個(gè)應(yīng)用程序或一臺設(shè)備。它是位于消息發(fā)布者和訂閱者之間,它可以:
- 接受來自客戶的網(wǎng)絡(luò)連接;
- 接受客戶發(fā)布的應(yīng)用信息;
- 處理來自客戶端的訂閱和退訂請求;
- 向訂閱的客戶轉(zhuǎn)發(fā)應(yīng)用程序消息;
本文只是基礎(chǔ)的介紹,下篇將正式介紹如何在Qt中調(diào)用MQTT,以及如何連接服務(wù)器等流程。
參考資料:
https://www.runoob.com/w3cnote/mqtt-intro.html
http://mqtt.p2hp.com/
總結(jié)
以上是生活随笔為你收集整理的MQTT--物联网(IoT)消息推送协议的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Qt 6的Qt 3D会是什么样?
- 下一篇: Qt开发MQTT(二) 之第三方QMQT