MQTT 是一個基于釋出/訂閱模式的消息傳輸協定。它具有輕量級、開放、簡單,易于實作,通信帶寬要求低等特點。這些特點使得它對機器與機器的通信(M2M)以及物聯網應用(IoT)來說是很好的選擇。它還被應用到手機APP和Web應用中。
MQTT于1999年由Andy Stanford-Clark(IBM)和Arlen Nipper(Arcom,現為Cirrus Link)發明,最初的應用是為了以最小的電池損耗和最小網絡帶寬将石油管道資料通過衛星進行傳輸。在MQTT最初版本釋出3年後,OASIS開源組織接管MQTT的标準化制定工作。MQTT如今的最新版本為MQTT3.1.1,相比MQTT3.1的變動很小,但還是鼓勵使用3.1.1版本,3.1.1已經成為了ISO标準。
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsISPrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdsATOfd3bkFGazxCMx8VesATMfhHLlN3XnxCMwEzX0xiRGZkRGZ0Xy9GbvNGLpZTY1EmMZVDUSFTU4VFRR9Fd4VGdsYTMfVmepNHLrJXYtJXZ0F2dvwVZnFWbp1zczV2YvJHctM3cv1Ce-cmbw5SNyQTMzQmZkR2NzMWZ5YjNxYzX3IDN1YTMzEzLcBTMxIDMy8CXn9Gbi9CXzV2Zh1WavwVbvNmLvR3YxUjLyM3Lc9CX6MHc0RHaiojIsJye.png)
用戶端/伺服器模式 vs 釋出/訂閱模式
傳統的網絡通信模式幾乎都是基于用戶端/伺服器模式的:用戶端直接和一個服務端建立連接配接,通信來擷取資料,資料源和資料目的地雙方直接連接配接。比如在Web應用程式中,浏覽器直接和Web伺服器通過HTTP協定通信,浏覽器需要知道伺服器的IP和端口号。
而釋出/訂閱模式解耦了用戶端,用戶端分為2種角色:釋出者(Publisher)和訂閱者(Subscriber)。每一個釋出者(Publisher)可以發送不同類型的消息,我們把消息的類型叫做主題(topic),MQTT通信中的消息都屬于某一個主題 ,而隻有訂閱了這個主題的訂閱者(Subscriber)才能收到屬于這個主題的消息。釋出者和訂閱者不需要在意和知道對方的存在(不需要知道對方的IP和端口),也不需要直接與對方建立連接配接。因為通信中存在着一個叫代理(MQTT broker)的第三種角色,也可以叫MQTT伺服器(MQTT server)。
釋出者、訂閱者隻需要知道MQTT 伺服器的IP和端口即可,并和它直接建立連接配接通信。MQTT代理作為消息的中轉,它過濾所有接受到的消息,并按照一定的機制(MQTT标準規定是基于主題的消息過濾派發方式,而具體的MQTT伺服器軟體也提供了其他的派發方式)分發它們,使得所有注冊到MQTT代理的訂閱者隻接收到他們訂閱了的消息,而不會收到他不關心的消息。
當釋出者釋出一條消息的時候,他必須同時指定消息的主題和消息的負載。MQTT代理在收到釋出者發過來的消息時,無需通路消息負載,他隻是通路消息的主題資訊,然後根據這主題派發給訂閱者。需要注意的是,一個用戶端可以同時既當釋出者又當訂閱者。比如一個開發闆連接配接了一盞LED燈,它可以釋出燈的暗/亮狀态資訊,也可以從其他節點訂閱對燈的控制消息。
<col>
需求項目
實際使用
其它替代品
MQTT伺服器軟體
mosquitto
/
公網伺服器
VPS,Ubuntu系統,帶一個IPv4位址
阿裡雲,騰訊雲等
遠端登入軟體
FinalShell
putty等
1、安裝
2、試運作
3、添加和修改配置
4、建立一個MQTT伺服器賬戶
5、重新啟動mosquitto
在App Store下載下傳MQTTool工具。
訂閱一個消息,主題為test
釋出主題為test的消息,點選發送後,點底部的Subscribe,看是否收到了推送。
作者:lulipro-代碼鋼琴家
本文版權歸作者所有,歡迎轉載。限于本人水準,如果文章和代碼有表述不當之處,還請不吝賜教。