文章目錄
- 前言
- 1. 查看EMQX本地WS端口
- 2. Linux安裝Cpolar工具
- 3. 配置WS公網連接地址
- 4. WS公網地址連接測試
- 5. 配置WSS公網連接地址
- 6. WSS公網地址連接測試
前言
隨著物聯網技術的不斷發展,MQTT作為一種輕量級的消息發布/訂閱協議,在物聯網通信中扮演著越來越重要的角色。EMQX作為一款開源的MQTT消息服務器,以其高性能、可擴展性和穩定性,成為了眾多物聯網應用的首選。然而,在實際應用中,我們常常需要在遠程環境下訪問和控制MQTT服務器,這就需要借助一些內網穿透工具來實現。cpolar正是這樣一款強大的內網穿透工具,它能夠幫助我們輕松實現MQTT服務器的遠程連接。
本文將詳細介紹如何使用EMQX結合cpolar來實現MQTT的遠程連接。如果沒有安裝EMQX,可以查看官方詳細的安裝文檔進行安裝:https://docs.emqx.com/en/emqx/latest/getting-started/getting-started.html
1. 查看EMQX本地WS端口
當我們安裝好EMQX后,本例是安裝在Linux 服務器.啟動服務后,輸入:systemctl status emqx
,查看服務狀態命令,可以查看到emqx服務的端口信息,其中18083是管理界面的端口,8083ws的連接端口,8084是wss連接端口,查看好后下面安裝cpolar內網穿透服務
2. Linux安裝Cpolar工具
本例的EMQX是安裝在Linux 服務器,所以下面我們在Linux安裝Cpolar內網穿透工具,通過Cpolar 轉發本地端口創建公網地址,我們可以很容易實現遠程訪問,而無需自己注冊域名購買云服務器.下面是安裝cpolar步驟
Cpolar官網地址: https://www.cpolar.com
- 使用一鍵腳本安裝命令
curl -L https://www.cpolar.com/static/downloads/install-release-cpolar.sh | sudo bash
- 安裝完成后,可以通過如下方式來操作cpolar服務,首先執行加入系統服務設置開機啟動,然后再啟動服務
# 加入系統服務設置開機啟動
sudo systemctl enable cpolar# 啟動cpolar服務
sudo systemctl start cpolar# 重啟cpolar服務
sudo systemctl restart cpolar# 查看cpolar服務狀態
sudo systemctl status cpolar# 停止cpolar服務
sudo systemctl stop cpolar
Cpolar安裝和成功啟動服務后,內部或外部瀏覽器上通過局域網IP加9200端口即:【http://192.168.xxx.xxx:9200】訪問Cpolar管理界面,使用Cpolar官網注冊的賬號登錄,登錄后即可看到Cpolar web 配置界面,接下來在web 界面配置即可
3. 配置WS公網連接地址
在上面的步驟中可以看到,ws的本地端口默認是8083,所以在cpolar中我們可以直接創建tcp隧道去進行連接
登錄cpolar web UI管理界面后,點擊左側儀表盤的隧道管理——創建隧道:
- 隧道名稱:可自定義,注意不要與已有的隧道名稱重復
- 協議:tcp
- 本地地址:8083 ( 默認端口)
- 域名類型:臨時隨機TCP端口 (首次使用 選擇隨機地址測試)
- 地區:選擇China top
點擊創建
(注意點擊一次即可!)
創建成功后,然后打開左側在線隧道列表,查看剛剛創建隧道后生成的遠程 TCP連接地址,這個地址就是遠程連接的地址,可以在其他設備上使用該地址進行遠程連接,下面我們進行連接測試
4. WS公網地址連接測試
創建ws的公網連接地址以后,我們打開EMQX Dashboard管理界面,管理界面端口是18083,登錄進去后,打開WebSocket Client 界面,這個界面是EMQX 集成的一個MQTT客戶端,我們在這里可以測試去連接WS服務(注意的是,這個客戶端只能進行ws連接,不能進行wss連接),上面我們可以看到,參數已經默認填寫上去了,我們可以直接點擊connect按鈕
點擊后,可以看到提示連接成功,表示ws本地連接是正常的,然后點擊紅色Disconnect斷開連接,下面我們直接換成我們在cpolar創建的公網地址,再次測試一下連接
輸入cpolar中創建的地址和對應的端后,點擊連接按鈕,可以看到,同樣提示成功,這樣一個ws的公網遠程連接地址就設置成功了,同樣,我們也可以在其他軟件應用或者程序中使用這個cpolar公網地址連接調用EMQX 的mqtt消息服務器進行通信,由于本例使用的是cpolar中的隨機地址,地址可能會變化,如果需要長期使用,建議固定cpolar中的公網地址,配置固定地址,可以參考這個教程:https://www.cpolar.com/blog/configure-fixed-tcp-port-address, 以上就是ws的連接配置,下面介紹wss的連接方式
5. 配置WSS公網連接地址
在上面的步驟中,我們介紹了如何創建ws的公網地址并進行連接,下面我們介紹在cpolar中創建wss的公網地址,注意的是,在cpolar中創建的協議不是TCP協議了,我們需要改為http協議,同時也是使用本地8083的端口,
同樣打開登錄cpolar web UI管理界面后,點擊左側儀表盤的隧道管理——創建隧道:
- 隧道名稱:可自定義,注意不要與已有的隧道名稱重復
- 協議:http (注意這里協議是http)
- 本地地址:8083 ( 同樣使用ws的默認端口)
- 域名類型:隨機域名 (首次使用 選擇隨機地址測試)
- 地區:選擇China
點擊創建
(注意點擊一次即可!)
創建成功后,我們打開左邊在線隧道列表,可以看到里面是我們創建的http域名地址,wss連接我們只需要用到域名.下面我們進行連接
6. WSS公網地址連接測試
WSS連接不能直接在EMQX 的管理界面測試,我們需要訪問一個開源的MQTTX連接網站進行測試,這個也是官方推薦的連接測試方式,瀏覽器訪問:https://mqttx.app/web-client#/recent_connections這個網站,點擊新建連接
然后輸入名稱,和cpolar中創建的域名,注意端口是443,不能輸入其他端口,只能輸入443端口,這個443并不是自己本地的443端口,而是這個域名的443端口,輸入完成點擊右上角連接
點擊連接后,我們可以看到提示已連接,表示成功使用wss連接成功了EMQX的MQTT消息服務器,即使我們穿透的是ws的8083端口,但是同樣可以使用wss連接,當然,我們也同樣可以在其他設備客戶端或者程序中使用這種方式去調用mqtt消息服務器進行通信!,本例使用的是cpolar的隨機地址域名,為了方便長期連接使用,建議使用固定域名,這樣地址域名不會變化,設置固定域名可以參考這個教程:https://www.cpolar.com/blog/configure-the-secondary-subdomain-name,關于wss的公網連接配置就介紹完成了。