news 2026/4/14 20:17:54

MQTT介绍

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
MQTT介绍

一、什么是MQTT
物联网(IoT)发展迅猛,传感器、网关、云平台之间如何高效通信成了核心问题。MQTT(Message Queuing Telemetry Transport)作为一种轻量级的消息传输协议,近年来被广泛应用于智能家居、工业控制、车联网等场景。
MQTT 是一种基于发布/订阅(Pub/Sub)模式的轻量级消息协议,设计初衷是为低带宽、不稳定网络环境下的设备通信而生。它更像是广播电台:你订阅频道,谁在频道里发布了消息你就能收到,中间由一个叫做 Broker 的中间人来转发消息。

二、MQTT 的三大角色
Broker(消息代理)
Broker 就是 MQTT 网络的大脑。客户端不互相通信,所有消息都通过 Broker 中转。主流 Broker 有
Mosquitto(轻量、适合嵌入式开发)
EMQX(高性能、支持百万连接)
HiveMQ、RabbitMQ(企业级)
Publisher(发布者)
发布消息的人,比如你家的温湿度传感器,每隔 5 秒发布一次环境数据。
Subscriber(订阅者)
对某类消息感兴趣的接收者,比如你手机里的 APP 订阅了“家里客厅/温度”,只要 Broker 收到这个主题的消息,就会推送给你。

三、核心机制-主题、保留消息
主题(Topic)
MQTT 的消息没有标题,靠的是主题(Topic)分类。
保留消息(Retained Message)
比如你家的空调状态是“开启”,订阅者上线时希望立刻知道当前状态,可以发布一条“保留消息”,Broker 会记住它,并在有人订阅时立刻推送。

四、GraniStudio是否支持MQTT

GraniStudio平台是苏州格拉尼视觉科技有限公司推出的对标Labview的零代码工控开发平台,该平台支持MQTT服务器,客户端,发送文本,接收文本和关闭MQTT通信。这几个工具算子的介绍如下:
MQTT服务器

MQTT服务器属于资源管理器算子部分,归属于资源管理器通用工具

通过主界面可配置IP地址和端口号.然后选配高级设置是否启用密码功能,连接时是否需要验证账号密码,并在列表中支持显示客户端连接列表和主题列表,消息列表方便用户调试使用。

操作示例

步骤一、创建IP地址和端口号,一定要注意IP格式如:127.0.0.1 默认端口号:1883

步骤二、如输入IP地址格式不正确将出现弹窗提示。

步骤三、如需要客户端连接时需要输入正确的账号和密码,就需要开启高级设置,设置连接验证,用户名和密码。

步骤四、设置完毕后点击开启服务即可。

步骤五、打开MQTT客户端测试工具。注意客户端IP为自动分配

步骤六、点击连接

连接不成功原因是因为服务器那边开启了连接验证,所以需要输入正确的验证信息才能连接成功。

步骤七、服务器列表中已显示该客户端的连接

步骤八、再次开启客户端连接该服务器

列表中已显示两个客户端的连接,

步骤九、客户端1订阅主题,客户端2发布主题

步骤十、客户端1显示客户端2发布主题。

从上图可看出 MQTT服务器是一个代理服务,不同客户端之间的通信。

一个客户端可订阅多个主题,。

MQTT客户端

MQTT客户端属于资源管理器算子部分,归属于资源管理器通用工具

算子内部自动分配客户端ID,通过主界面输入MQTT服务器IP地址和端口号可连接MQTT服务器,然后选配高级设置是否启用密码功能,连接时是否需要验证账号密码,并支持显示接收消息列表,通过界面可订阅主题和发布主题,实现与MQTT服务器与MQTT其他客户端的通信。

操作示例

步骤一、打开客户端算子后将默认配分客户端ID,无法修改

步骤二、配置IP和端口号,IP格式:127.0.0.1 端口号:1883 默认端口号:1883

步骤三、是否开启高级设置,开启高级设置需输入用户名和密码,,未开启将无需输入, 默认未开启。如果服务器开启用户名验证将开启。

步骤四、点击连接按钮

即可在连接列表中显示该客户端连接信息

步骤五、点击断开按钮

点击断开连接后服务器列表那会刷新,当前客户端处于未连接状态

步骤六、订阅主题

服务器将显示客户端订阅列表。
使用客户端2发布该主题

客户端2发布主题并附加消息Test

步骤七、发布主题消息

客户端2订阅T1主题, 客户端1发布主题T1

MQTT发送文本

MQTT发送文本属于主任务设计器算子部分,归属于主任务设计器通用工具

算子内部无需连接操作,通过引用依赖引用MQTT客户端对象即可,实现代理客户端对象发布主题消息功能,通过界面配置可配置主题,可引用主题和手动输入主题,也可引用消息和手动输入消息两种方式。

需要发送消息必须有主题,需要发布主题必须消息,如用户输入主题当前客户端未发布将自动发布该主题消息。

操作示例

创建服务器调试工具。

GS MQTT客户端连接该服务器

创建两个客户端,模拟两个客户端之间通信

步骤一、引用MQTT 客户端 对象

步骤二、使用自定义主题方式,输入文本 R1

步骤三、使用自定义消息方式,输入消息 Test

步骤四、注意事项主题和消息两者均不可为空。

步骤五、点击执行按钮

服务器已接收到MQTT客户端发布主题和消息

客户端2订阅R1主题,与 GS MQTT客户端建立连接

订阅主题成功, 将刚GS MQTT客户端发布主题和消息发送至该客户端中

步骤六、使用引用方式

使用局部变量定义两个变量,一个主题一个消息变量 均是GString类型

步骤七、引用主题方式

步骤八、引用消息方式

因为客户端2订阅R1主题,发送文本发送的主题为R1 消息为GRaniTest。正常发送主题消息

MQTT接收文本

MQTT接收文本属于主任务设计器算子部分,归属于主任务设计器通用工具

算子内部无需连接操作,通过引用依赖引用MQTT服务器或客户端对象即可,实现代理接收MQTT服务器或客户端消息功能,通过界面选配项可配置接收超时功能,如在设置时长内未接收文本消息将视为超时,如未打开超时功能将默认持续不断等待接收,直到接收到文本即可。

时长单位设置以毫秒为单位。

接收到文本将设置为本算子输出项,输出结果字符串类型未字符串类型,字节类型未Byte字节类型。

操作示例

步骤一、订阅客户端主题 T1

步骤二、接收文本选择引用对象

步骤三、是否打开高级设置,默认 未打开

未打开高级设置将一直等待文本接收

步骤四、是否打开高级设置,打开超时设置需要设置一个时长,如在规定时间内为未接收到文本消息,则视为超时,否则将接收文本显示到输出界面

打开高级设置将在规定时间段内接收文本

3000毫秒内未接收到文本

步骤五、主动和被动触发,当引用一个MQTT通信对象时,内部已为此通信建立起一个接收事件,如果用户点击执行按钮为主动触发等待接收功能,如果是程序在流程中正常执行到此处为被动触发等待接收功能,一般主动触发适用于调试阶段的使用,被动出发适用于在自动流程中接收信号的使用。

主动执行接收

被动接收

被动接收

MQTT关闭

MQTT关闭属于主任务设计器算子部分,归属于主任务设计器通用工具

MQTT关闭算子将代理MQTT服务器或客户端关闭通信功能,可通过引用依赖配置MQTT服务器或客户端,如内部引用MQTT服务器将停止监听,禁止发送消息和客户端的连接.如为MQTT客户端将停止需MQTT服务器的连接,停止发送消息。

操作示例

步骤一、使用拖拉拽方式在主任务设计器工具箱中将关闭MQTT通信算子创建在画布中。

步骤二、选择引用依赖框配置一个MQTT类相关算子如:GMQTT服务器,GMQTT客户端。暂时支持类型(GMQTTClient,GMQTTServer)),两种数据类型。

步骤三、算子执行成功,可继续使用初始化算子再次初始化方可继续使用标刻功能。

五、为什么选择GraniStudio MQTT通信协议?

保持 ClientID 唯一,防止连接互踢

合理规划主题命名,避免混乱

连接长时间保持,不必频繁重连

消息机制更灵活,低功耗设备友好

更适合物联网中“一对多”或“多对多”的场景

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/8 22:02:45

终极YOLOv5容器化部署:3步搞定跨平台AI推理

终极YOLOv5容器化部署:3步搞定跨平台AI推理 【免费下载链接】yolov5 yolov5 - Ultralytics YOLOv8的前身,是一个用于目标检测、图像分割和图像分类任务的先进模型。 项目地址: https://gitcode.com/GitHub_Trending/yo/yolov5 在AI模型部署领域&a…

作者头像 李华
网站建设 2026/4/15 4:11:31

Verl项目LoRA实战:如何用1/3资源训练超大模型

Verl项目LoRA实战:如何用1/3资源训练超大模型 【免费下载链接】verl verl: Volcano Engine Reinforcement Learning for LLMs 项目地址: https://gitcode.com/GitHub_Trending/ve/verl 在AI模型训练领域,资源限制一直是困扰开发者的主要难题。传统…

作者头像 李华
网站建设 2026/4/6 4:09:34

沙盒性能深度调优:从响应延迟到极速响应的实战指南

沙盒性能深度调优:从响应延迟到极速响应的实战指南 【免费下载链接】Sandboxie Sandboxie Plus & Classic 项目地址: https://gitcode.com/gh_mirrors/sa/Sandboxie 当你的Sandboxie-Plus配置了十几个沙盒后,是否发现界面响应变得像"老年…

作者头像 李华
网站建设 2026/4/9 7:34:03

终极指南:wkhtmltopdf实现PDF自动页码与交叉引用的完整教程

终极指南:wkhtmltopdf实现PDF自动页码与交叉引用的完整教程 【免费下载链接】wkhtmltopdf 项目地址: https://gitcode.com/gh_mirrors/wkh/wkhtmltopdf 还在为手动调整PDF页码而烦恼?想要快速生成专业的企业文档却不知从何入手?本文将…

作者头像 李华
网站建设 2026/4/13 21:16:48

TikTok 2025 出海红利:万亿市场里,理性玩家的精准掘金路径

跨境TikTok正站在历史性交汇点:流量红利持续释放,商业生态加速成熟,这片数字沃土已经从流量猎场演变为需要系统策略的专业竞技场。政策新局:开放与规范的平衡艺术平台政策呈现清晰的二元特征:入门门槛降低,…

作者头像 李华