背景
MQTT(Message Queuing Telemetry Transport,消息隊(duì)列遙測(cè)傳輸協(xié)議),是一種基于發(fā)布/訂閱(publish/subscribe)模式的“輕量級(jí)”通訊協(xié)議,該協(xié)議構(gòu)建于TCP/IP協(xié)議上,由IBM在1999年發(fā)布。MQTT最大優(yōu)點(diǎn)在于,可以以極少的代碼和有限的帶寬,為連接遠(yuǎn)程設(shè)備提供實(shí)時(shí)可靠的消息服務(wù)。作為一種低開(kāi)銷(xiāo)、低帶寬占用的即時(shí)通訊協(xié)議,使其在物聯(lián)網(wǎng)、小型設(shè)備、移動(dòng)應(yīng)用等方面有較廣泛的應(yīng)用。
MQTT是一個(gè)基于客戶端-服務(wù)器的消息發(fā)布/訂閱傳輸協(xié)議。MQTT協(xié)議是輕量、簡(jiǎn)單、開(kāi)放和易于實(shí)現(xiàn)的,這些特點(diǎn)使它適用范圍非常廣泛。在很多情況下,包括受限的環(huán)境中,如:機(jī)器與機(jī)器(M2M)通信和物聯(lián)網(wǎng)(IoT)。其在,通過(guò)衛(wèi)星鏈路通信傳感器、偶爾撥號(hào)的醫(yī)療設(shè)備、智能家居、及一些小型化設(shè)備中已廣泛使用。
關(guān)于MQTT我分為2~3篇來(lái)描述,先從實(shí)踐來(lái)描述。
MQTT服務(wù)器搭建
MQTT是一個(gè)基于客戶端-服務(wù)器的消息發(fā)布/訂閱傳輸協(xié)議,所以需要一個(gè)服務(wù)器,MQTT服務(wù)器可以選擇開(kāi)源平臺(tái)--EMQx和ThingsBoard。這兩個(gè)開(kāi)源平臺(tái)部署比較方便。本次的講解主要基于EMQx開(kāi)源平臺(tái)。
EMQx配置EMQx需要進(jìn)行簡(jiǎn)單的配置,比如設(shè)置MQTT client連接服務(wù)器時(shí),需要的username、password等。
因?yàn)槲业沫h(huán)境是在windows下,所以下面的配置都是基于windows下的,不過(guò)其他平臺(tái)的大同小異。
配置username和password等參數(shù)
在解壓的目錄中打開(kāi):emqxetcpluginsemqx_auth_username.conf
從examples中可以看出,可以設(shè)置多個(gè)username和password
加密方式設(shè)置為plain(透?jìng)鳎?/p>
配置匿名登錄
在解壓的目錄中打開(kāi):emqxetcemqx.conf
為true,即允許匿名登錄,方便調(diào)試,如果設(shè)置成false,需要進(jìn)行鑒權(quán)。
操作emqx broker:
// 啟動(dòng)EMQx Broker:
emqx start
// 停止EMQx Broker:
emqx stop
// 重啟EMQx Broker:
emqx restart
更多的操作命令參考鏈接:https://docs.emqx.cn/broker/v4.3/getting-started/command-line.html
EMQx管理界面EMQx中包含了一個(gè)Web server,當(dāng)啟動(dòng)EMQx后,通過(guò)瀏覽器登錄《服務(wù)器IP:18083》就能登錄web server。
其中:默認(rèn)用戶名為 admin, 密碼為 public
MQTT客戶端搭建
服務(wù)器搭建好了,那么還需要一個(gè)MQTT客戶端,為了快速學(xué)習(xí),我們可以使用別人做好的MQTT客戶端軟件-- MQTT.fx。下載地址:http://www.jensd.de/apps/mqttfx/
下載完,根據(jù)提示安裝即可。
啟動(dòng)一個(gè)MQTT客戶端:
打開(kāi)設(shè)置
配置MQTT client
連接服務(wù)器
連接成功后,可以在EMQx web server上查看連接信息,如果信息跟客戶端的一致,說(shuō)明連接成功
啟動(dòng)第二個(gè)MQTT客戶端:
操作跟第一個(gè)客戶端一致,啟動(dòng)完之后就可以在EMQx web server上查看連接信息
實(shí)驗(yàn)
在上述中服務(wù)器和客戶已經(jīng)成功建立連接。
我們通過(guò)一個(gè)實(shí)驗(yàn)演示M2M的通信。
其中client01客戶端,訂閱一個(gè)topic,topic名稱為rice:
可以通過(guò)EMQx web server查看訂閱的topic
client02客戶端,向topic:rice發(fā)布消息。
總結(jié)
通過(guò)EMQx搭建服務(wù)器和MQTT.fx客戶端,我們很輕松的搭建好MQTT環(huán)境,這樣我們很方面的學(xué)習(xí)MQTT。
MQTT協(xié)議是一個(gè)基于TCP的應(yīng)用層協(xié)議??梢愿弦黄恼碌腃oAP協(xié)議進(jìn)行對(duì)比學(xué)習(xí)。CoAP是基于UDP的。不過(guò)也有基于UDP的MQTT。
原文標(biāo)題:教你動(dòng)手寫(xiě)網(wǎng)絡(luò)協(xié)議棧-MQTT報(bào)文解析-實(shí)踐
文章出處:【微信公眾號(hào):RTThread物聯(lián)網(wǎng)操作系統(tǒng)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
責(zé)任編輯:haq
-
網(wǎng)絡(luò)
+關(guān)注
關(guān)注
14文章
7586瀏覽量
89003 -
MQTT
+關(guān)注
關(guān)注
5文章
653瀏覽量
22582
原文標(biāo)題:教你動(dòng)手寫(xiě)網(wǎng)絡(luò)協(xié)議棧-MQTT報(bào)文解析-實(shí)踐
文章出處:【微信號(hào):RTThread,微信公眾號(hào):RTThread物聯(lián)網(wǎng)操作系統(tǒng)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論