3步实现MQTT远程连接!EMQX+cpolar构建物联网消息高速公路

文章目录

    • 前言
    • [1. 查看EMQX本地WS端口](#1. 查看EMQX本地WS端口)
    • [2. Linux安装Cpolar工具](#2. Linux安装Cpolar工具)
    • [3. 配置WS公网连接地址](#3. 配置WS公网连接地址)
    • [4. WS公网地址连接测试](#4. WS公网地址连接测试)
    • [5. 配置WSS公网连接地址](#5. 配置WSS公网连接地址)
    • [6. WSS公网地址连接测试](#6. WSS公网地址连接测试)

前言

EMQX的核心优势在于其极致的性能优化:单机支持10万级并发连接,消息吞吐量可达每秒百万级,且CPU占用率低于30%。作为开发者,我特别欣赏其模块化设计------可按需加载规则引擎、数据桥接等插件,避免资源浪费。

从使用者角度看,EMQX的Web管理界面直观易用,通过Dashboard可实时监控设备连接状态、消息吞吐量等关键指标。某次调试中,我通过内置的WebSocket客户端,在5分钟内定位到设备离线的原因是QoS级别设置错误,大幅提升排查效率。

集成cpolar后,我们实验室的物联网测试环境发生了质变:在家即可通过公网地址调试办公室的EMQX服务,无需再奔波于两地。上周远程指导学生完成了基于MQTT的温湿度监测系统,所有设备通过cpolar隧道连接,数据实时同步到云端数据库,整个过程零配置门槛。

本文将详细介绍如何使用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

  • 使用一键脚本安装命令
shell 复制代码
curl -L https://www.cpolar.com/static/downloads/install-release-cpolar.sh | sudo bash
  • 安装完成后,可以通过如下方式来操作cpolar服务,首先执行加入系统服务设置开机启动,然后再启动服务
shell 复制代码
# 加入系统服务设置开机启动
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的公网连接配置就介绍完成了

技术的真正价值在于解决实际问题。EMQX与cpolar的组合,不仅让MQTT通信突破了局域网限制,更通过极简配置降低了物联网开发的准入门槛------或许未来的边缘计算,本就该如此简单。

cpolar官网-安全的内网穿透工具 | 无需公网ip | 远程访问 | 搭建网站

相关推荐
BY组态8 小时前
【技术分析】Ricon组态系统的模块化架构设计
物联网·iot·web组态·组态
BY组态9 小时前
【教程】如何使用Ricon组态系统快速构建监控画面
物联网·iot·web组态·组态
BY组态11 小时前
【对比分析】Ricon组态系统 vs 传统组态软件
运维·物联网·web组态·组态
zhaoshuzhaoshu1 天前
BLE(蓝牙低功耗)连接过程详解
物联网·蓝牙·无线
搜佛说1 天前
下一代跨语言原生操作系统商业计划书
物联网·软件工程
BY组态1 天前
Ricon组态系统在实际项目中的应用案例分享
物联网·web组态·组态
Zevalin爱灰灰1 天前
零基础入门学用物联网(ESP8266) 第一部分 基础知识篇(五)
单片机·物联网·嵌入式·esp8266
Web3_Daisy1 天前
Token 分红机制详解:实现逻辑、激励结构与风险分析
大数据·人工智能·物联网·web3·区块链
BY组态1 天前
从零开始:Ricon组态系统快速入门指南
运维·物联网·web组态·组态
次旅行的库1 天前
MQTT学习笔记
数据库·笔记·物联网·学习