首页 > 其他分享 >本地MQTT协议消息服务远程连接教程介绍

本地MQTT协议消息服务远程连接教程介绍

时间:2023-11-15 13:55:52浏览次数:34  
标签:教程 公网 MQTT tcp 连接 地址 cpolar 远程

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://i.cpolar.com/m/4Y6w

  • 使用一键脚本安装命令

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

标签:教程,公网,MQTT,tcp,连接,地址,cpolar,远程
From: https://www.cnblogs.com/flzidea/p/17833655.html

相关文章

  • 本地Elasticsearch 结合内网穿透实现远程连接
    Elasticsearch是一个基于Lucene库的分布式搜索和分析引擎,它提供了一个分布式、多租户的全文搜索引擎,具有HTTPWeb接口和无模式JSON文档,同时也是是一个非常强大的工具,可以用于各种用途,例如日志分析、搜索引擎、安全分析等等。远程连接的好处在于可以让用户从远程位置访问Elastics......
  • 无涯教程-Dart - Length函数
    返回字符串的长度,包括空格,制表符和换行符。Length-语法String.lengthLength-示例voidmain(){Stringstr="HelloAll";print("Thelengthofthestringis:${str.length}");}它将产生以下输出-。Thelengthofthestringis:9参考链接https://www......
  • 无涯教程-Dart - isEmpty函数
    如果字符串为空,则返回true;否则返回false。isEmpty-语法String.isEmptyisEmpty-示例voidmain(){Stringstr="Learnfk";print(str.isEmpty);}它将产生以下输出-。False参考链接https://www.learnfk.com/dart-programming/dart-programming-string-p......
  • 无涯教程-Dart - codeUnits函数
    返回给定字符串的UTF-16代码单元的列表。codeUnits-语法String.codeUnitscodeUnits-示例voidmain(){Stringstr="Hello";print(str.codeUnits);}它将产生以下输出-[72,101,108,108,111]参考链接https://www.learnfk.com/dart-programming/dart-......
  • mysql 操作详细教程
    MySQL是一种流行的关系型数据库管理系统,用于存储和管理数据。下面是MySQL操作的详细教程:安装MySQL:首先,你需要下载和安装MySQL。你可以从MySQL官方网站(https://www.mysql.com)上下载适合你操作系统的安装程序,并按照安装向导进行安装。启动MySQL服务器:安装完成后,你需要启动My......
  • Windows10上安装Mosquitto的步骤(win10、win11 安装mqtt)
    目录· 前言· 1.下载安装· 2.设置Broker的IP和Port· 3.设置账户和密码· 4.重启服务mosquittobroker· 5.如何让Windows服务开机自启前言mosquitto是一款开源免费的软件,官网链接。它是一些可执行文件的集合,通过这些可执行文件,它提供broker,publish,subscribe功能......
  • 无涯教程-Dart - truncate函数
    丢弃任何小数位后返回整数。truncate-语法Number.truncate()truncate-返回值返回不带小数点的int。truncate-示例voidmain(){doublen1=2.123;varvalue=n1.truncate();print("Thetruncatedvalueof2.123=${value}");}它将产生以下输出-......
  • sw2023 安装教程
    安装包下载地址https://pan.baidu.com/s/1o0tXmUUcous0RxZk8JA9mg?pwd=vg2d1、将安装包解压,得到solidworks2023.sp0.premium.DVD.iso原程序和_SolidSQUAD_文件夹,并且确保文件大小是准确的,  2、软件安装需要电脑中安装了NETFramework3.5/4.0组件,依次点击控制面板-程序-......
  • Grafana新手教程-实现仪表盘创建和告警推送
    前言最近在使用Grafana的时候,发现Grafana功能比想象中要强大,除了配合Prometheus使用之外,他自身都可以做很多事情,可视化和监控平台,还可以直接根据用户自定义的告警规则完成告警和进行各种通知。于是在深入学习了一段时间之后,整理成此博文。温馨提示,本文约1.3w字,几十张示例图片并......
  • C语言程序设计入门教程4
    1define#定义常量和宏(1)#define定义的标识符常量(eg:MAX=100)(2)define定义宏--宏:带参数eg:比较俩数大小用函数方式表示intMax(intx,inty)//定义函数方式{if(x>y) returnx; else returny;}用宏表示//定义MAX(x,y)=(x>y?x:y)#defineMAX(x,y)(x>y?x:y)//定义MA......