MQTT協定遠端存取的好處在於它可以實現跨網路的遠端通訊,使得裝置可以在不同的地方進行控制和監控。同時,MQTT協定具有輕量級、高效、可靠等特點,可以在低頻寬、不穩定網路環境下穩定執行。此外,MQTT協定還支援多種程式語言和平臺,方便開發者進行二次開發和整合
下面介紹在Linux 中搭建Mosquitto MQTT協定訊息伺服器端,並結合Cpolar 內網穿透工具實現遠端連線!
本例在centos 7系統,使用yum 一鍵安裝:
yum install mosquitto -y
安裝完成後,下面是一些操作Mosquitto服務命令
sudo systemctl start mosquitto # 啟動 Mosquitto 服務
sudo systemctl stop mosquitto # 停止 Mosquitto 服務
sudo systemctl restart mosquitto # 重新啟動 Mosquitto 服務
sudo systemctl status mosquitto #檢查伺服器狀態
執行啟動命令後,輸入檢視狀態,我們可以看到服務已經執行成功了,本地安裝成功了,下面安裝cpolar工具,穿透Mosquitto 服務的本地1883
埠,實現遠端存取連線.
上面我們安裝成功了Mosquitto MQTT伺服器,下面我們在Linux安裝cpolar內網穿透工具,通過cpolar 轉發本地埠對映的公網地址,我們可以很容易實現遠端存取,而無需自己註冊域名購買雲伺服器.下面是安裝cpolar步驟
cpolar官網地址: https://i.cpolar.com/m/4Y6w
使用一鍵指令碼安裝命令
curl -L https://www.cpolar.com/static/downloads/install-release-cpolar.sh | sudo bash
向系統新增服務
sudo systemctl enable cpolar
啟動cpolar服務
sudo systemctl start cpolar
cpolar安裝成功後,在外部瀏覽器上存取Linux 的9200埠即:【http://區域網ip:9200】,使用cpolar賬號登入,登入後即可看到cpolar web 設定介面,結下來在web 管理介面設定即可
登入cpolar web UI管理介面後,點選左側儀表盤的隧道管理——建立隧道:
隧道名稱:可自定義,注意不要與已有的隧道名稱重複
協定:tcp
本地地址:1883 (本地預設埠)
域名型別:臨時隨機TCP埠
地區:選擇China VIP
點選建立
然後開啟左側線上隧道列表,檢視剛剛建立隧道後生成的tcp地址,這個地址就是公網連線地址,我們可以在任意裝置上使用該地址進行連線
上面在cpolar中建立了 公網地址,下面我們使用MQTT使用者端工具mqttfx進行遠端連線測試,如果沒有該使用者端,可以進入官方下載:https://softblade.de/en/download-2/,下載後安裝開啟,點選設定圖示
通過cpolar公網地址進行連線,Address值為公網地址,Port 值為公網地址後面對應的埠號,輸入完點選應用
然後回到主介面,點選connect,燈變為綠色,表示連線成功
我們可以測試,是否可以釋出訊息和訂閱,首先在Subscribe訂閱介面填寫一個topic 訂閱ID,然後點選按鈕Subscribe,開始訂閱
然後在Publish 釋出介面,輸入同樣的topic ID,然後輸入需要釋出的訊息,點選按鈕Publish
回到Subscribe訂閱介面,我們可以看到,成功訂閱到了該條資訊
同樣 我們在程式碼層面進行連線,以Java 為例,匯入相關包
<dependency>
<groupId>org.eclipse.paho</groupId>
<artifactId>org.eclipse.paho.client.mqttv3</artifactId>
<version>1.1.0</version>
</dependency>
然後使用Cpolar 公網地址進行連線,輸入ClientID,向同一個topic進行釋出訊息,當然,這邊測試,地址是寫在內部,如生產環境,建議將地址進行外部設定,有助於方便後續修改
程式執行後,我們可以看到,在使用者端Subscribe 介面工具上,看到了我們程式碼中釋出的訊息資料,也是可以連線測試成功
要注意的是,以上步驟使用的是隨機臨時tcp埠地址,所生成的公網地址為隨機臨時地址,該公網地址24小時內會隨機變化。我們接下來為其設定固定的TCP埠地址,該地址不會變化,設定後將無需每天重複修改地址。
設定固定tcp埠地址需要將cpolar升級到專業版套餐或以上。
保留一個固定tcp地址,登入
地區:選擇China
描述:即備註,可自定義
點選保留
地址保留成功後,系統會生成相應的固定公網地址,將其複製下來
開啟cpolar web ui管理介面,點選左側儀表盤的隧道管理——隧道列表,找到我們上面建立的TCP隧道,點選右側的編輯
修改隧道資訊,將保留成功的固定tcp地址設定到隧道中
埠型別:修改為固定tcp埠
預留的tcp地址:填寫官網保留成功的地址,
點選更新
隧道更新成功後,點選左側儀表盤的狀態——線上隧道列表,可以看到公網地址已經更新成為了固定TCP地址。
固定好了地址後,程式中修改成我們固定的TCP地址進行連線,當然,這邊測試,地址是寫在內部,如生產環境,建議將地址進行外部設定,有助於方便後續修改
可以看到接收訂閱到了傳送的訊息,一個永久不變的固定地址就設定好了