本地 MQTT 协议消息服务远程连接教程介绍
Mosquitto 是一个开源的消息代理,它实现了 MQTT 协议版本 3.1 和 3.1.1。它可以在不同的平台上运行,包括 Windows、Linux、macOS 等。mosquitto 可以用于物联网、传感器、移动应用程序等场景,提供了一种轻量级的、可靠的、基于发布/订阅模式的消息传递机制。
MQTT 协议远程访问的好处在于它可以实现跨网络的远程通信,使得设备可以在不同的地方进行控制和监控。同时,MQTT 协议具有轻量级、高效、可靠等特点,可以在低带宽、不稳定网络环境下稳定运行。此外,MQTT 协议还支持多种编程语言和平台,方便开发者进行二次开发和集成
下面介绍在 Linux 中搭建 Mosquitto MQTT 协议消息服务端,并结合 Cpolar 内网穿透工具实现远程连接!
1. Linux 搭建 Mosquitto
本例在 centos 7 系统,使用 yum 一键安装:
安装完成后,下面是一些操作 Mosquitto 服务命令
执行启动命令后,输入查看状态,我们可以看到服务已经运行成功了,本地安装成功了,下面安装 cpolar 工具,穿透 Mosquitto 服务的本地1883
端口,实现远程访问连接.

2. Linux 安装 Cpolar
上面我们安装成功了 Mosquitto MQTT 服务器,下面我们在 Linux 安装 cpolar 内网穿透工具,通过 cpolar 转发本地端口映射的公网地址,我们可以很容易实现远程访问,而无需自己注册域名购买云服务器.下面是安装 cpolar 步骤
cpolar 官网地址: https://i.cpolar.com/m/4Y6w
使用一键脚本安装命令
向系统添加服务
启动 cpolar 服务
cpolar 安装成功后,在外部浏览器上访问 Linux 的 9200 端口即:【http://局域网 ip:9200】,使用 cpolar 账号登录,登录后即可看到 cpolar web 配置界面,结下来在 web 管理界面配置即可

3. 创建 MQTT 服务公网连接地址
登录 cpolar web UI 管理界面后,点击左侧仪表盘的隧道管理——创建隧道:
隧道名称:可自定义,注意不要与已有的隧道名称重复
协议:tcp
本地地址:1883 (本地默认端口)
域名类型:临时随机 TCP 端口
地区:选择 China VIP
点击创建

然后打开左侧在线隧道列表,查看刚刚创建隧道后生成的 tcp 地址,这个地址就是公网连接地址,我们可以在任意设备上使用该地址进行连接

4. 客户端远程连接 MQTT 服务
上面在 cpolar 中创建了 公网地址,下面我们使用 MQTT 客户端工具 mqttfx 进行远程连接测试,如果没有该客户端,可以进入官方下载:https://softblade.de/en/download-2/,下载后安装打开,点击设置图标

通过 cpolar 公网地址进行连接,Address 值为公网地址,Port 值为公网地址后面对应的端口号,输入完点击应用

然后回到主界面,点击 connect,灯变为绿色,表示连接成功

我们可以测试,是否可以发布消息和订阅,首先在 Subscribe 订阅界面填写一个 topic 订阅 ID,然后点击按钮 Subscribe,开始订阅

然后在 Publish 发布界面,输入同样的 topic ID,然后输入需要发布的消息,点击按钮 Publish

回到 Subscribe 订阅界面,我们可以看到,成功订阅到了该条信息

5. 代码调用 MQTT 服务
同样 我们在代码层面进行连接,以 Java 为例,导入相关包
然后使用 Cpolar 公网地址进行连接,输入 ClientID,向同一个 topic 进行发布消息,当然,这边测试,地址是写在内部,如生产环境,建议将地址进行外部配置,有助于方便后续修改

程序运行后,我们可以看到,在客户端 Subscribe 界面工具上,看到了我们代码中发布的消息数据,也是可以连接测试成功

6. 固定连接 TCP 公网地址
要注意的是,以上步骤使用的是随机临时 tcp 端口地址,所生成的公网地址为随机临时地址,该公网地址 24 小时内会随机变化。我们接下来为其配置固定的 TCP 端口地址,该地址不会变化,设置后将无需每天重复修改地址。
配置固定 tcp 端口地址需要将 cpolar 升级到专业版套餐或以上。
保留一个固定 tcp 地址,登录cpolar官网,点击左侧的预留,找到保留的 tcp 地址,我们来为我的世界保留一个固定 tcp 地址:
地区:选择 China
描述:即备注,可自定义
点击保留

地址保留成功后,系统会生成相应的固定公网地址,将其复制下来

打开 cpolar web ui 管理界面,点击左侧仪表盘的隧道管理——隧道列表,找到我们上面创建的 TCP 隧道,点击右侧的编辑

修改隧道信息,将保留成功的固定 tcp 地址配置到隧道中
端口类型:修改为固定 tcp 端口
预留的 tcp 地址:填写官网保留成功的地址,
点击更新

隧道更新成功后,点击左侧仪表盘的状态——在线隧道列表,可以看到公网地址已经更新成为了固定 TCP 地址。

7. 固定地址连接测试
固定好了地址后,程序中修改成我们固定的 TCP 地址进行连接,当然,这边测试,地址是写在内部,如生产环境,建议将地址进行外部配置,有助于方便后续修改

可以看到接收订阅到了发送的消息,一个永久不变的固定地址就设置好了

文章转载自:Book鱼
评论