搭建自己的MQTT伺服器

搭建自己的MQTT服務器

MQTT協議是廣泛應用的物聯網協議,使用測試MQTT協議需要MQTT的代理。有兩種方法使用MQTT服務,一是租用現成的MQTT服務器,如阿里雲,百度雲,華為雲等公用的雲平臺提供的MQTT服務,使用公用的MQTT服務器的好處是省事,但如果僅僅用於測試學習還需要註冊帳號,靈活性差些,有的平臺還需要付費。另一方法是自己使用開源的MQTT組件來搭建。

MQTT服務器非常多,如apache的ActiveMQ,emtqqd,HiveMQ,Emitter,Mosquitto,Moquette等等。

這裡介紹的是用輕量級的mosquitto開源項目來搭建一個屬於自己的MQTT服務器。

第一步:需要安裝一臺linux主機,這不多介紹,可以使用真機安裝也可以使用虛擬機安裝。如果僅僅是自己測試使用都可以。

第二步:下載mosquitto需要的依賴

  1. sudo apt-get install libssl-dev
  2. sudo apt-get install uuid-dev
  3. sudo apt-get install cmake

第三步:下載mosquitto並解壓,現在mosquitto官網最新的版本是1.5.1

tar xzvf mosquitto-1.5.1.tar.gz

第四步:編譯

cd mosquitto-1.5.1/

make

make install

第五步:啟動mosquitto

./mosquitto -v

1535473957: mosquitto version 1.5.1 starting

1535473957: Using default config.

1535473957: Opening ipv4 listen socket on port 1883.

1535473957: Opening ipv6 listen socket on port 1883.

這時候mosquitto就會以默認的參數啟動。如果需要帶配置文件可以修改配置文件mosquitto.conf,

啟動時候加上參數 -c,

./mosquitto -c mosquitto.conf

可以看到,mosquitto監聽的端口為1883.

這時候我們的MQTT服務器就搭建好了。可找一個mqtt客戶端來測試一下。

先發佈一個主題“home/garden/fountain/2”

內容是“hello world”

搭建自己的MQTT服務器

這時候在mosquitto會打印出下面的log

535474247: New connection from 192.168.1.105 on port 1883.

1535474247: New client connected from 192.168.1.105 as MQTT_FX_Client (c1, k60).

1535474247: No will message specified.

1535474247: Sending CONNACK to MQTT_FX_Client (0, 0)

1535474307: Received PINGREQ from MQTT_FX_Client

1535474307: Sending PINGRESP to MQTT_FX_Client

1535474339: Received PUBLISH from MQTT_FX_Client (d0, q0, r0, m0, 'home/garden/fountain/2', ... (12 bytes))

1535474367: Received PINGREQ from MQTT_FX_Client

1535474367: Sending PINGRESP to MQTT_FX_Client

訂閱主題“home/garden/fountain/2”

搭建自己的MQTT服務器

可以看到收到了自己發佈的消息。

用wireshark抓包

搭建自己的MQTT服務器

可以看到抓到了一個MQTT的publish的報文。


分享到:


相關文章: