本地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服务命令

sudo systemctl start mosquitto     # 启动 Mosquitto 服务
sudo systemctl stop mosquitto      # 停止 Mosquitto 服务
sudo systemctl restart mosquitto   # 重新启动 Mosquitto 服务
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 为例,导入相关包

  <dependency><groupId>org.eclipse.paho</groupId><artifactId>org.eclipse.paho.client.mqttv3</artifactId><version>1.1.0</version></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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/145462.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

高标准农田数字孪生

高标准农田是指通过土地整治、土壤改良、水利设施、农电配套、机械化作业等措施&#xff0c;提升农田质量和生产能力&#xff0c;达到田块平整、集中连片、设施完善、节水高效、宜机作业、土壤肥沃、生态友好、抗灾能力强、与现代农业生产和经营方式相适应的旱涝保收、稳产高产…

【docker启动的Jenkins时,遇到时区问题处理】

1、查看容器中的时区 [rootlocalhost jenkins]# docker exec -it jenkins cat /etc/timezone Etc/UTC而本地使用的是Asia/shanghai [rootlocalhost jenkins]# timedatectl | grep Time zoneTime zone: n/a (CST, 0800)###查看 [rootlocalhost jenkins]# cd /usr/share/zoneinf…

【Coppeliasim仿真】 坐标系间平滑插补

在仿真环境中控制两个参考框架&#xff08;ReferenceFrame1和ReferenceFrame2&#xff09;之间进行平滑的插值运动。在两个参考框架之间插值运动的过程中&#xff0c;使用了两种不同的方法&#xff0c;通过设置useMethodNb来选择使用的方法。 方法1使用了旋转轴和角度的计算&a…

Windows 小狼毫 如何在安装后指定用户配置文件文件夹

Windows 小狼毫 如何在安装后指定用户配置文件文件夹 打开小狼毫的安装目录&#xff0c;双击目录中的 WeaselSetup.exe 就会弹出截图中的那个窗口&#xff0c;然后指定你的用户文件夹目录就可以了

云ES高级监控告警

一、高级监控告警配置 1.1 操作入口 1.2 配置告警模块 1.2.1 新建联系人 添加联系人后,需要进行激活 1.2.2 新建联系人组 1.2.3 创建报警组 1.2.4 新建报警规则

鸿蒙4.0真机调试踩坑

传言鸿蒙next版本将不再兼容Android&#xff0c;所以领导安排做下鸿蒙开发的调研工作。 鸿蒙开发指南其实已经非常的友好了。但是鸿蒙开发本身还是有些坑要踩&#xff0c;这篇文章主要讲了鸿蒙真机调试问题。 目前手上的真机为华为 nova6&#xff0c;处理器为麒麟990.鸿蒙系统…

敲敲云与简道云流程设计引擎对比:选择更适合您的产品

在当今数字化时代&#xff0c;流程管理和自动化变得越来越重要。作为APaaS服务的两个知名产品&#xff0c;敲敲云和简道云都提供了流程设计引擎&#xff0c;帮助企业实现高效的流程管理。然而&#xff0c;在比较两者之后&#xff0c;您可能会发现敲敲云在多个方面具有优势&…

Github小彩蛋显示自己的README,git 个人首页的 README,readme基本语法

先上效果&#x1f447; 代码在下面&#xff0c;流程我放最下面了&#xff0c;思路就是创建一个和自己同名的仓库&#xff0c;要公开&#xff0c;创建的时候会提示小彩蛋你的reademe会展示在你的首页&#xff0c;或许你在这个readme里面的修改都会在你的主页上看到了&#x1f44…

OpenLayer系列——【一】初识OpenLayer与OpenLayer视图操作

初识OpenLayer 1、初始化地图渲染 安装openlayer依赖 npm i ol首先准备一个容器用来渲染地图 <div id"map" ref"map" style"width: 100%; height: 100%" />导入依赖初始化地图 import ol/ol.css; import OSM from ol/source/OSM.js; …

芸鹰蓬飞:抖店服务分怎么快速升分?

在这个平台上&#xff0c;抖店服务分数的高低直接关系到商家在抖音平台上的曝光和信任度。那么&#xff0c;如何快速提升抖店服务分&#xff0c;成为了广大商家亟需解决的问题。本文将从多个角度&#xff0c;深入探讨提升抖店服务分的有效方法。 一、了解抖店服务分的评估标准 …

010.cat、find

1、用cat进行拼接 cat命令能够显示或拼接文件内容&#xff0c;不过它的能力远不止如此。比如说&#xff0c;cat能够将标准输入数据与文件数据组合在一起。通常的做法是将stdin重定向到一个文件&#xff0c;然后再合并两个文件。而cat命令一次就能搞定这些操作。 用cat读取文件…

人工智能基础_机器学习039_sigmoid函数_逻辑回归_逻辑斯蒂回归_分类神器_代码实现逻辑回归图---人工智能工作笔记0079

逻辑斯蒂回归(Logistic Regression)是一种常用的分类算法,其基本思想是通过拟合一个逻辑斯蒂函数来预测样本所属的类别。它广泛应用于各个领域,如医学、金融、市场营销等,具有较好的解释性和可解释性。在逻辑斯蒂回归中,我们通常使用的是二分类问题,即样本只属于两个类别…

线下保薪班开启

大家都知道我们有线上班&#xff0c;对于想技能提升的同学来说&#xff0c;线上足以满足技能提升需求&#xff0c;对于想转行找工作&#xff0c;或者学生想就业的同学来说&#xff0c;线上却并不是一个好的选择&#xff0c;担心的可能有:担心自身基础较弱怕学不懂&#xff0c;担…

数据库实验报告(六)

实验报告&#xff08;六&#xff09; 1、实验目的 &#xff08;1&#xff09; 掌握关联查询的用法 &#xff08;2&#xff09; 掌握集合查询的区别和用法 &#xff08;3&#xff09; 掌握EXISTS的用法 2、实验预习与准备 &#xff08;1&#xff09; 了解ANY&…

运维知识点-Windows操作系统cmd/Dos批处理命令与脚本手册bat

Windows操作系统命令与脚本总结 管理员权限&#xff1a;添加账号并加入管理员组添加用户至远程桌面组允许修改密码 防火墙 :关闭防火墙 匹配出注册表信息中的软件&#xff1a;获取完整补丁信息&#xff08;比systeminfo全&#xff09;&#xff1a;获取系统和版本信息显示本地或…

IntelliJ IDEA cmd和idea Terminal查看java版本不一致

参考&#xff1a;IntelliJ IDEA cmd和idea Terminal查看java版本不一致的解决方案 1、idea清缓存重启 没用 2、删除缓存文件 没试 3、修改环境变量的顺序 没试 4、重启电脑 麻烦&#xff0c;没试 5、项目配置jdk7 没试 按照这个url配置了一个遍 https://blog.csdn…

AI视频检索丨历史视频标签化,助力重要事件高效溯源

随着科技的不断发展&#xff0c;安全监控已成为我们生活中不可或缺的一部分。当发生盗窃、人员走失、安全事故等重要事件时&#xff0c;常常需要通过查看视频回放了解事情经过&#xff0c;为解决问题提供证据或指明查找方向。但是&#xff0c;人工查看视频回放往往费时费力&…

IgH Master环境搭建

目标&#xff1a;实时linux内核中运行IgH主站&#xff0c;ethercat的用户态工具能看到主站信息。 一、需要的软件 1&#xff0c;vbox虚拟机 https://www.virtualbox.org/&#xff0c;下载VirtualBox 7.0, 备注&#xff1a;windows中不要用wsl开发&#xff0c;wsl运行unbuntu…

苹果MAC安装绿盾出现问题,安装时没有出现填服务器地址的页面,现在更改不了也卸载不了绿盾 怎么处理?

环境: Mac mini M1 Mac os 11.0 绿盾v6.5 问题描述: 苹果MAC安装绿盾出现问题,安装时没有出现填服务器地址的页面,现在更改不了也卸载不了绿盾 怎么处理? 解决方案: 大部分企业是Windows和Mac终端混合使用,在进行文档加密管理时通常会遇到不兼容的现象,而为了统一…

M系列 Mac使用Homebrew下载配置git和连接GitHub

一、首先我们需要安装Homebrew M系列 Mac安装配置Homebrewhttps://blog.csdn.net/W_Fe5/article/details/134428377?spm1001.2014.3001.5501 二、下载git 1、终端输入一下命令 brew install git 2、这时下载完成 二、配置git 1、创建用户名和邮箱 这里以我自己的邮箱举例…