MQTT消息服務器新玩法:EMQX結合內網穿透的實戰配置指南

文章目錄

    • 前言
    • 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內網穿透服務

image-20241029112559767

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 界面配置即可

image-20240220142041422

3. 配置WS公網連接地址

在上面的步驟中可以看到,ws的本地端口默認是8083,所以在cpolar中我們可以直接創建tcp隧道去進行連接

登錄cpolar web UI管理界面后,點擊左側儀表盤的隧道管理——創建隧道:

  • 隧道名稱:可自定義,注意不要與已有的隧道名稱重復
  • 協議:tcp
  • 本地地址:8083 ( 默認端口)
  • 域名類型:臨時隨機TCP端口 (首次使用 選擇隨機地址測試)
  • 地區:選擇China top

點擊創建 (注意點擊一次即可!)

image-20241029124827609

創建成功后,然后打開左側在線隧道列表,查看剛剛創建隧道后生成的遠程 TCP連接地址,這個地址就是遠程連接的地址,可以在其他設備上使用該地址進行遠程連接,下面我們進行連接測試

image-20241029125523252

4. WS公網地址連接測試

創建ws的公網連接地址以后,我們打開EMQX Dashboard管理界面,管理界面端口是18083,登錄進去后,打開WebSocket Client 界面,這個界面是EMQX 集成的一個MQTT客戶端,我們在這里可以測試去連接WS服務(注意的是,這個客戶端只能進行ws連接,不能進行wss連接),上面我們可以看到,參數已經默認填寫上去了,我們可以直接點擊connect按鈕

image-20241029130005918

點擊后,可以看到提示連接成功,表示ws本地連接是正常的,然后點擊紅色Disconnect斷開連接,下面我們直接換成我們在cpolar創建的公網地址,再次測試一下連接

image-20241029130748951

輸入cpolar中創建的地址和對應的端后,點擊連接按鈕,可以看到,同樣提示成功,這樣一個ws的公網遠程連接地址就設置成功了,同樣,我們也可以在其他軟件應用或者程序中使用這個cpolar公網地址連接調用EMQX 的mqtt消息服務器進行通信,由于本例使用的是cpolar中的隨機地址,地址可能會變化,如果需要長期使用,建議固定cpolar中的公網地址,配置固定地址,可以參考這個教程:https://www.cpolar.com/blog/configure-fixed-tcp-port-address, 以上就是ws的連接配置,下面介紹wss的連接方式

image-20241029131047495

5. 配置WSS公網連接地址

在上面的步驟中,我們介紹了如何創建ws的公網地址并進行連接,下面我們介紹在cpolar中創建wss的公網地址,注意的是,在cpolar中創建的協議不是TCP協議了,我們需要改為http協議,同時也是使用本地8083的端口,

同樣打開登錄cpolar web UI管理界面后,點擊左側儀表盤的隧道管理——創建隧道:

  • 隧道名稱:可自定義,注意不要與已有的隧道名稱重復
  • 協議:http (注意這里協議是http)
  • 本地地址:8083 ( 同樣使用ws的默認端口)
  • 域名類型:隨機域名 (首次使用 選擇隨機地址測試)
  • 地區:選擇China

點擊創建 (注意點擊一次即可!)

image-20241029140739921

創建成功后,我們打開左邊在線隧道列表,可以看到里面是我們創建的http域名地址,wss連接我們只需要用到域名.下面我們進行連接

image-20241029140914012

6. WSS公網地址連接測試

WSS連接不能直接在EMQX 的管理界面測試,我們需要訪問一個開源的MQTTX連接網站進行測試,這個也是官方推薦的連接測試方式,瀏覽器訪問:https://mqttx.app/web-client#/recent_connections這個網站,點擊新建連接

image-20241029135349958

然后輸入名稱,和cpolar中創建的域名,注意端口是443,不能輸入其他端口,只能輸入443端口,這個443并不是自己本地的443端口,而是這個域名的443端口,輸入完成點擊右上角連接

image-20241029140258555

點擊連接后,我們可以看到提示已連接,表示成功使用wss連接成功了EMQX的MQTT消息服務器,即使我們穿透的是ws的8083端口,但是同樣可以使用wss連接,當然,我們也同樣可以在其他設備客戶端或者程序中使用這種方式去調用mqtt消息服務器進行通信!,本例使用的是cpolar的隨機地址域名,為了方便長期連接使用,建議使用固定域名,這樣地址域名不會變化,設置固定域名可以參考這個教程:https://www.cpolar.com/blog/configure-the-secondary-subdomain-name,關于wss的公網連接配置就介紹完成了。

image-20241029141125722

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/73234.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/73234.shtml
英文地址,請注明出處:http://en.pswp.cn/web/73234.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

編程題記錄3

九宮幻方 題目鏈接:https://www.lanqiao.cn/problems/100/learning/?page1&first_category_id1&second_category_id3&tags%E7%9C%81%E8%B5%9B&tag_relationintersection 先旋轉、鏡像得到所有的情況,可以發現情況是可以暴力得出的。…

電機控制常見面試問題(十八)

文章目錄 一.電機控制高級拓撲結構1.LLC 二.談談電壓器飽和后果三.電壓器繞組連接方式的影響四.有源逆變的條件 一.電機控制高級拓撲結構 1.LLC LLC是什么?—— 一個會"變魔術"的電源盒子 想象你有一個魔法盒子,能把電池的電壓變大或變小&…

C#設計模式快速回顧

知識點來源:人間自有韜哥在,豆包 目錄 一、七大原則1. 單一職責原則 (Single Responsibility Principle)2. 開放封閉原則 (Open-Closed Principle)3. 里氏替換原則 (Liskov Substitution Principle)4. 接口隔離原則 (Interface Segregation Principle)5…

匯編語言高級編程技巧:從基礎到進階

前言 匯編語言作為底層編程語言,直接操作硬件,執行效率高,但編寫復雜邏輯時往往顯得繁瑣。通過使用匯編偽指令和宏,我們可以實現類似于高級語言的結構,如條件判斷、循環、結構體和函數等,從而提升代碼的可讀…

XSS跨站腳本攻擊漏洞(Cross Site Scripting)

前提概要 本文章主要用于分享XSS跨站腳本攻擊漏洞基礎學習,以下是對XSS跨站腳本攻擊漏洞的一些個人解析,請大家結合參考其他文章中的相關信息進行歸納和補充。 XSS跨站腳本攻擊漏洞描述 跨站腳本攻擊(XSS)漏洞是一種常見且危害較…

2、pytest核心功能(進階用法)

目錄 1、標記(Markers): 自定義插件 內置標記 2、夾具(Fixtures): 夾具得用法 夾具作用域 3、鉤子(hook): 這篇是最重要的 測試文件中需要用到的 總的來說 有以下…

恒流源電路深度解析:各類架構的優缺點與應用場景

點擊下面圖片,為您提供全新的嵌入式學習路線 文章目錄 ①. 單晶體管恒流源②. NPNPNP組合恒流源③. 雙晶體管恒流源④. 鏡像電流源⑤. 比例電流源⑥. 微電流源⑦. 加射極輸出的鏡像電流源⑧. 威爾遜電流源⑨.綜合對比表⑩.選型建議 恒流源是電子電路中的基礎模塊&…

研究生入學前文獻翻譯訓練

文獻翻譯 人工智能《Meta - Learning with Memory - Augmented Neural Networks》one-shot learning:Neural Turing Machines,NTMs《Model - Agnostic Meta - Learning for Fast Adaptation of Deep Networks》Meta - learninggradient stepsfinetune《Attention Is All You …

在IDEA中快速注釋所有console.log

在IDEA中快速注釋所有console.log 在前端IDEA中,快速注釋所有console.log語句可以通過以下步驟實現2: 打開要修改的文件。使用快捷鍵CtrlF打開搜索框。點擊打開使用正則搜索的開關或者通過AltR快捷鍵來打開。在搜索框輸入[]*console.log[]*,…

#C8# UVM中的factory機制 #S8.2.1# factory 機制重載法則

factory機制最偉大的地方在于其具有重載功能。重載并不是factory機制的發明,前面已經介紹過的所有面向對象的語言都支持函數/任務重載,另外,SystemVerilog還額外支持對約束的重載。只是factory機制的重載與這些重載都不一樣。 一 問題引出 以8.1.1節的代碼清單8-1和代碼清…

macOS 15 通過 MacPorts 安裝 PHP 7 構建錯誤找不到符號在 dns.o 中解決方法

構建遇到的問題如下: "_res_9_dn_expand", referenced from:_php_parserr in dns.o_php_parserr in dns.o_php_parserr in dns.o_php_parserr in dns.o_php_parserr in dns.o_php_parserr in dns.o_zif_dns_get_mx in dns.o..."_res_9_dn_skipname&…

MDK優化等級對浮點運算效率的影響

MDK優化等級:Default模式 和 O0模式 在支持浮點運算的MCU(如STM32的Cortex-M4或Cortex-M7系列)上,執行浮點運算的算法時,MDK編譯器的優化等級配置為 default模式(通常是O1或O2)和 O0模式&#…

嵌入式學習第二十八天--棧

棧的基本代碼 棧是限定僅在表尾進行插入和刪除操作的線性表。 先進后出、后進先出 棧頂:允許操作的一端 棧底:不允許操作的一端 入棧,出棧。 順序棧 鏈式棧 302\5 1.創建 CreateSeqStack 2.銷毀 DestroySeqStack 3.判斷是否為空棧 IsEmptySeqStack 4.判斷是否為滿…

MySQL中怎么分析性能?

MySQL中主要有4種方式可以分析數據庫性能,分別是慢查詢日志,profile,Com_xxx和explain。 慢查詢日志 先用下面命令查詢慢查詢日志是否開啟, show variables like slow_query_log;# 一般默認都是以下結果 ---------------------…

大模型在支氣管哮喘手術全流程風險預測與治療方案制定中的應用研究

目錄 一、引言 1.1 研究背景與意義 1.2 研究目標與方法 1.3 研究創新點 二、支氣管哮喘概述 2.1 定義與發病機制 2.2 分類與臨床表現 2.3 診斷標準與方法 三、大模型技術原理與應用現狀 3.1 大模型的基本原理 3.2 在醫療領域的應用案例分析 3.3 適用于支氣管哮喘預…

《AI Agent智能應用從0到1定制開發》學習筆記:使用RAG技術增強大模型能力,實現與各種文檔的對話

思維導圖 📚 引言 大型語言模型(如ChatGPT)雖然功能強大,但它們存在一些明顯的局限性。這些模型的知識庫更新較慢,無法實時學習最新內容,而且對私有數據或特定領域的專業知識了解有限。例如,Ch…

Python 爬蟲(4)HTTP協議

文章目錄 一、HTTP協議1、HTTP特點2、HTTP工作原理3、HTTP與HTTPS的區別 前言: HTTP(HyperText Transfer Protocol,超文本傳輸協議)是互聯網上應用最為廣泛的一種網絡協議,用于在客戶端和服務器之間傳輸超文本&#xf…

測試工程 常用Python庫

以下是測試工程師在Python中必須掌握的常用庫、框架以及提升日常工作效率的技巧總結: 一、必須掌握的Python庫與框架 1. 測試框架 unittest Python內置的單元測試框架,提供測試用例、測試套件、斷言等功能,適合單元測試和集成測試。核心組件…

【線程安全問題的原因和方法】【java形式】【圖片詳解】

在本章節中采用實例圖片的方式,以一個學習者的姿態進行描述問題解決問題,更加清晰明了,以及過程中會發問的問題都會一一進行呈現 目錄 線程安全演示線程不安全情況圖片解釋: 將上述代碼進行修改【從并行轉化成穿行的方式】不會出…

Infinite you:flexible photo recrafting while preserving your identity

基于DiT的id保留圖像生成面臨著多種挑戰,缺乏定制模塊設計,模型擴展的困難以及高質量數據的匱乏,因此基于flux的解決方案是相對稀缺的,pulid-flux是基于flux的id保留的初步嘗試,包括instantx和xlabs-ai的flux.1-dev ip-adapters,現有方法在三個關鍵方面保險不足:1.身份相…