MQTT协议消息代理服务公网远程连接

news2024/10/7 8:19:34

文章目录

    • 前言
    • 1. Linux 搭建 Mosquitto
    • 2. Linux 安装Cpolar
    • 3. 创建MQTT服务公网连接地址
    • 4. 客户端远程连接MQTT服务
    • 5. 代码调用MQTT服务
    • 6. 固定连接TCP公网地址
    • 7. 固定地址连接测试

在这里插入图片描述

前言

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官网地址: https://www.cpolar.com

  • 使用一键脚本安装命令
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进行远程连接测试,如果没有该客户端,可以进入官方下载:https://softblade.de/en/download-2/,下载后安装打开,点击设置图标

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
在这里插入图片描述

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

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

相关文章

linux os cpufreq 调频

amd ubuntu os 调频&#xff1a; sudo apt install linux-intel-iotg-5.15-tools-common # version 5.15.0-1043.49~20.04.1, or sudo apt install linux-oem-5.6-tools-common # version 5.6.0-1017.17 sudo apt install linux-tools-common …

城市内涝积水监测,万宾科技内涝预警监测系统

每一个城市的排水体系都是一个复杂的网络系统&#xff0c;需要多个部分配合协调&#xff0c;预防城市排水管网带来安全隐患&#xff0c;也因此才能在一定程度上缓解城市内涝带来的安全问题。在海绵城市建设过程中不仅要解决大部分道路硬化导致的积水无法渗透等问题&#xff0c;…

Java 设计模式——访问者模式

目录 1.概述2.结构3.案例实现3.1.抽象访问者类3.2.抽象元素类3.3.具体元素类3.4.具体访问者类3.5.对象结构类3.6.测试 4.优缺点5.使用场景6.扩展6.1.分派6.2.动态分配6.3.静态分配6.4.双分派 1.概述 访问者模式 (Visitor Pattern) 是一种行为型设计模式&#xff0c;它用于将数…

潼南柠檬产业发展大会举行 这三个场景“柠”聚了人气

华龙网讯&#xff08;首席记者 羊华&#xff09;今&#xff08;6&#xff09;日下午&#xff0c;2023中国潼南柠檬产业发展大会正式举行。潼南区准备了“大礼包”&#xff0c;既有专业论坛峰会&#xff0c;也首发了“柠檬产业大脑”&#xff0c;还进行了招商引资集中签约&#…

Linux安装git和maven——拉取代码 --> mvn打包成jar包 --->运行jar包

前言 我们知道最后的代码都是要运行在Linux系统中的&#xff0c;所以就需要在Linux中安装git&#xff0c;从而能够拉取代码&#xff0c;安装maven&#xff0c;从而能够进行项目的打包。 本篇博客以centos为例&#xff0c;介绍如何安装git&#xff0c;安装maven3.8&#xff0c…

【LLMs】从大语言模型到表征再到知识图谱

从大语言模型到表征再到知识图谱 InstructGLMLLM如何学习拓扑&#xff1f;构建InstructGLM泛化InstructGLM补充参考资料 2023年8月14日&#xff0c;张永峰等人的论文《Natural Language is All a Graph Needs》登上arXiv街头&#xff0c;轰动一时&#xff01;本论文概述了一个名…

界面组件DevExpress ASP.NET Core v23.1 - 进一步升级UI组件

DevExpress ASP.NET Core Controls使用强大的混合方法&#xff0c;结合现代企业Web开发工具所期望的所有功能。该套件通过ASP.NET Razor标记和服务器端ASP.NET Core Web API的生产力和简便性&#xff0c;提供客户端JavaScript的性能和灵活性。ThemeBuilder工具和集成的Material…

为什么推荐从Linux开始了解IT技术

IT是什么&#xff0c;是干什么的呢&#xff1f; 说起物联网&#xff0c;云计算&#xff0c;大数据&#xff0c;或许大家听过。但是&#xff0c;你知道&#xff0c;像云计算的底层基座是什么呢&#xff1f;就是我们现在说的Linux操作系统。而云计算就是跑在Linux操作系统上的一个…

管理驾驶舱这么做,领导都点赞(附方案下载)

你是否知道你的企业是否充分利用了可用的数据资源&#xff1f; 著名的著名的质量管理专家&#xff0c;威廉爱德华德莱克&#xff08;William Edwards Deming&#xff09;曾说过&#xff1a;"数据不是权力&#xff0c;能够理解数据的能力才是真正的权力。" 企业在经营…

Unity Mirror学习(一) SyncVars属性使用

官网中所说的网络对象&#xff0c;指的是挂了 NetworkIdentity组件的对象 官网中所说的玩家对象&#xff0c;指的是NetworkManager脚本上的PlayerPrefab预制体 这个概念对阅读官网文档很重要&#xff0c;我刚开始并不理解&#xff0c;走了歪路 SyncVars&#xff08;同步变量&a…

ssm+vue的论文管理系统(有报告)。Javaee项目,ssm vue前后端分离项目。

演示视频&#xff1a; ssmvue的论文管理系统(有报告)。Javaee项目&#xff0c;ssm vue前后端分离项目。 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站。 项目介绍&#xff1a; 采用M&am…

使用promise创建一个同步事件驱动api

使用promise创建一个同步事件驱动api 事件驱动体系结构(EDA)是一种强大的方法&#xff0c;可以在网络上构建松散耦合、性能好、可伸缩的应用程序。它支持非常多功能&#xff0c;如推送通知、协作编辑和多人操作&#xff0c;以及其他实时交互。 但有时模型与我们开发人员需要的…

工业镜头接口类型

现有产品主要有以下接口 1、C:最常见的工业相机接口&#xff0c;受限于接口物理尺寸大小&#xff0c;最大靶面目前是4/3” 2、M42:M421.0,2k和4k线阵相机使用 3、M58S:M580.75,大靶面相机使用&#xff0c;可以转C(限于CH080相机&#xff0c;靶面4/3”)&#xff0c;可以转F,可以…

Selenium关于内容信息的获取读取

在进行自然语言处理、文本分类聚类、推荐系统、舆情分析等研究中,通常需要使用新浪微博的数据作为语料,这篇文章主要介绍如果使用Python和Selenium爬取自定义新浪微博语料。因为网上完整的语料比较少,而使用Selenium方法有点简单、速度也比较慢,但方法可行,同时能够输入验…

中国第二批,11个大模型备案获批

加上首批的 10 余个大模型&#xff0c;目前已有超过 20 个大模型获得审批。 据钛媒体独家报道&#xff0c;国内第二批通过备案的AI大模型包括11家公司&#xff0c;部分已面向全社会开放服务。加上首批的10余个大模型&#xff0c;目前已有超过20个大模型获得备案。 新一批备案…

Python数据容器(列表)

目录 一.什么是数据容器二.数据容器&#xff1a;列表1.列表的定义2.列表的下标索引3.列表的常用操作4.总结5.练习 三.列表的遍历1.列表的遍历2.while循环和for循环的对比3.练习 一.什么是数据容器 1.什么是数据容器 一种可以存储多个元素的Python数据类型 2.Python有哪些数…

c语言总是有小问题,是练的少吗?

c语言总是有小问题&#xff0c;是练的少吗&#xff1f; 题主说我做c语言的题目时候&#xff0c;是有思路的并且可以按照想法写下来&#xff0c;大体上看没有问题&#xff0c;但是到运行的时候总是不过关。就需要很长的时间找出那个细微的错误&#xff0c;这种细微的错误怎么才能…

“深入理解机器学习性能评估指标:TP、TN、FP、FN、精确率、召回率、准确率、F1-score和mAP”

目录 引言 分类标准 示例&#xff1a;癌症检测 1. 精确率&#xff08;Precision&#xff09; 2. 召回率&#xff08;Recall&#xff09; 3. 准确率&#xff08;Accuracy&#xff09; 4. F1-score 5. mAP&#xff08;均值平均精度&#xff09; 总结与通俗解释 引言 机器…

自动驾驶算法(九):多项式轨迹与Minimun Snap原理与Matab代码详解

目录 1 为什么需要轨迹优化 2 代码解析 3 完整代码 1 为什么需要轨迹优化 我们利用前八篇所学的博客可以利用RRT、A*、遗传算法等设计出一条折线轨迹&#xff0c;轨迹优化就是在路径优化的基础上将折线优化成曲线&#xff0c;这样更加有利于无人机的飞行。 那么什么是多项式轨…

史上第一款AOSP开发的IDE (支持Java/Kotlin/C++/Jni/Native/Shell/Python)

ASFP Study 史上第一款AOSP开发的IDE &#xff08;支持Java/Kotlin/C/Jni/Native/Shell/Python&#xff09; 类似于Android Studio&#xff0c;可用于开发Android系统源码。 Android studio for platform&#xff0c;简称asfp(爱上富婆)。 背景&下载&使用 背景 由…