搭建MQTT服務器

MQTT協議簡介

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標準。

 

客戶端/服務器模式 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燈,它能夠發佈燈的暗/亮狀態信息,也能夠從其餘節點訂閱對燈的控制消息。

 

搭建MQTT服務器

需求項目 實際使用 其它替代品
MQTT服務器軟件

mosquitto工具

/測試

公網服務器 搬瓦工VPS,Ubuntu系統,帶一個IPv4地址 阿里雲,騰訊雲等
遠程登陸軟件 FinalShell putty等

 

一、安裝 ui

sudo apt-add-repository ppa:mosquitto-dev/mosquitto-ppa     #添加源到軟件倉庫
sudo apt-get update                                         #更新軟件倉庫列表
sudo apt-get install mosquitto                              #安裝mosquitto

二、試運行阿里雲

sudo service mosquitto status                               #查看運行狀態
sudo service mosquitto start                                #啓動服務
sudo service mosquitto stop                                 #中止服務

三、添加和修改配置spa

sudo service mosquitto stop   #首先中止服務

#用戶的局部配置文件放在: /etc/mosquitto/conf.d/目錄下,而且這個目錄下的全部以.conf後綴的文件都將被mosquitto做爲配置文件,在啓動時加載。

#在/etc/mosquitto/conf.d目錄下,新建myconfig.conf配置文件

#在其中輸入以下內容
#-------------------------------------------
# 關閉匿名訪問,客戶端必須使用用戶名
allow_anonymous false

#指定 用戶名-密碼 文件
password_file /etc/mosquitto/pwfile.txt
#--------------------------------------------

四、建立一個MQTT服務器帳戶命令行

假設用戶名爲:user1
在命令行運行:mosquitto_passwd -c /etc/mosquitto/pwfile.txt user1

回車後連續輸入2次用戶密碼便可

五、從新啓動mosquitto代理

sudo service mosquitto start      #啓動服務

 

 測試mosquitto

在App Store下載MQTTool工具。

 

 訂閱一個消息,主題爲test

 

發佈主題爲test的消息,點擊發送後,點底部的Subscribe,看是否收到了推送。

 

相關文章
相關標籤/搜索