• 本地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 一键安装:

    yum install mosquitto -y

    安装完成后,下面是一些操作Mosquitto服务命令

    1. sudo systemctl start mosquitto     # 启动 Mosquitto 服务
    2. sudo systemctl stop mosquitto      # 停止 Mosquitto 服务
    3. sudo systemctl restart mosquitto   # 重新启动 Mosquitto 服务
    4. sudo systemctl status mosquitto    #检查服务器状态

    执行启动命令后,输入查看状态,我们可以看到服务已经运行成功了,本地安装成功了,下面安装cpolar工具,穿透Mosquitto 服务的本地1883端口,实现远程访问连接.

    image-20231108154838984

    2. Linux 安装Cpolar

    上面我们安装成功了Mosquitto MQTT服务器,下面我们在Linux安装cpolar内网穿透工具,通过cpolar 转发本地端口映射的公网地址,我们可以很容易实现远程访问,而无需自己注册域名购买云服务器.下面是安装cpolar步骤

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

    • 使用一键脚本安装命令

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

    image-20230831171159175

    3. 创建MQTT服务公网连接地址

    登录cpolar web UI管理界面后,点击左侧仪表盘的隧道管理——创建隧道:

    • 隧道名称:可自定义,注意不要与已有的隧道名称重复

    • 协议:tcp

    • 本地地址:1883 (本地默认端口)

    • 域名类型:临时随机TCP端口

    • 地区:选择China VIP

    点击创建

    image-20231108155844792

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

    image-20231108160004729

    4. 客户端远程连接MQTT服务

    上面在cpolar中创建了 公网地址,下面我们使用MQTT客户端工具mqttfx进行远程连接测试,如果没有该客户端,可以进入官方下载:Download – Softblade,下载后安装打开,点击设置图标

    image-20231108163808427

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

    image-20231108163643497

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

    image-20231108163916120

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

    image-20231108164320230

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

    image-20231108164627143

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

    image-20231108164722273

    5. 代码调用MQTT服务

    同样 我们在代码层面进行连接,以Java 为例,导入相关包

    1. <dependency>
    2.           <groupId>org.eclipse.paho</groupId>
    3.           <artifactId>org.eclipse.paho.client.mqttv3</artifactId>
    4.           <version>1.1.0</version>
    5.       </dependency>

    然后使用Cpolar 公网地址进行连接,输入ClientID,向同一个topic进行发布消息,当然,这边测试,地址是写在内部,如生产环境,建议将地址进行外部配置,有助于方便后续修改

    image-20231108170302838

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

    image-20231108170526029

    6. 固定连接TCP公网地址

    要注意的是,以上步骤使用的是随机临时tcp端口地址,所生成的公网地址为随机临时地址,该公网地址24小时内会随机变化。我们接下来为其配置固定的TCP端口地址,该地址不会变化,设置后将无需每天重复修改地址。

    配置固定tcp端口地址需要将cpolar升级到专业版套餐或以上。

    保留一个固定tcp地址,登录cpolar官网,点击左侧的预留,找到保留的tcp地址,我们来为我的世界保留一个固定tcp地址:

    • 地区:选择China

    • 描述:即备注,可自定义

    点击保留

    image-20231108170758385

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

    image-20231108170843827

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

    image-20231108170907726

    修改隧道信息,将保留成功的固定tcp地址配置到隧道中

    • 端口类型:修改为固定tcp端口

    • 预留的tcp地址:填写官网保留成功的地址,

    点击更新

    image-20231108170940383

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

    image-20231108171003955

    7. 固定地址连接测试

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

    image-20231108171442960

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

    image-20231108171506544

    文章转载自:Book鱼

    原文链接:https://www.cnblogs.com/flzidea/p/17833655.html

  • 相关阅读:
    大疆2022秋招笔试 —— 最小时间差、数组的最小偏移量
    Python机器学习从0到1:从十余行代码看机器学习的套路(附零基础学习资料)
    循环购商业模式:实现用户裂变的关键
    Red Hat 8 安装Docker返回找不到镜像的问题(Status code: 404)
    【网络教程】IPtables官方教程--学习笔记1
    孙卫琴的《精通Vue.js》读书笔记-CSS中DOM元素的过渡模式
    Java中什么是异常?
    Arch Linux安装桌面环境
    【CSS】H9_CSS变形transform、过渡transition、CSS3动画 animation
    Angular知识点系列(3)-每天10个小知识
  • 原文地址:https://blog.csdn.net/sdgfafg_25/article/details/134455178