MQTT協議是廣泛應用的物聯網協議,使用測試MQTT協議需要MQTT的代理。有兩種方法使用MQTT服務,
一是租用現成的MQTT服務器,如阿里雲,百度雲,華為雲等公用的雲平台提供的MQTT服務,
使用公用的MQTT服務器的好處是省事,但如果僅僅用於測試學習還需要注冊帳號,靈活性差些,
有的平台還需要付費。另一方法是自己使用開源的MQTT組件來搭建。
MQTT服務器非常多,如apache的ActiveMQ,emtqqd,HiveMQ,Emitter,Mosquitto,Moquette等等。
這里介紹的是用輕量級的mosquitto開源項目來搭建一個屬於自己的MQTT服務器。
下載mosquitto需要的依賴
sudo apt-get install libssl-dev sudo apt-get install uuid-dev sudo apt-get install cmake
下載mosquitto並解壓
wget http://mosquitto.org/files/source/mosquitto-1.6.9.tar.gz tar -zxvf mosquitto-1.6.9.tar.gz
進入目錄
cd mosquitto-1.6.9
編譯
make
安裝
sudo make install
#啟動mosquitto
mosquitto -v 1535473957: mosquitto version 1.5.4 starting 1535473957: Using default config. 1535473957: Opening ipv4 listen socket on port 1883. 1535473957: Opening ipv6 listen socket on port 1883.
這時候mosquitto就會以默認的參數啟動。如果需要帶配置文件可以修改配置文件mosquitto.conf
可以看到,mosquitto監聽的端口為1883.
這時候我們的MQTT服務器就搭建好了。
可找一個mqtt客戶端來測試一下。
測試過程:
Android app 發布topic:
鏈接:https://pan.baidu.com/s/1ABG8GZHPjnoWe-lfCh8kUg 密碼:vn6w
pc端 接收topic 消息:
import time import paho.mqtt.client as mqtt # The callback for when the client receives a CONNACK response from the server. HOST = "192.168.199.111" PORT = 1883 def on_connect(client, userdata, flags, rc): if rc == 0: print("連接成功") print("Connected with result code " + str(rc)) def on_message(client, userdata, msg): print(msg.topic + " " + str(msg.payload)) client = mqtt.Client(protocol=3) client.username_pw_set("admin", "password") client.on_connect = on_connect client.on_message = on_message client.connect(host=HOST, port = PORT, keepalive=60) # 訂閱頻道 time.sleep(1) client.subscribe("test") #client.subscribe([("public", 0), ("test", 2)]) client.loop_forever()