MQTT消息队列遥测传输协议

目录

1.定义

2.核心工作原理

3.核心概念与特性

3.1.主题 (Topic)

3.2.服务质量 (QoS)

3.3.轻量级与低功耗

3.4.遗嘱机制 (Last Will)

4.典型应用

[5.MQTT 和 Unity 的事件系统](#5.MQTT 和 Unity 的事件系统)

[5.1.类比 MQTT 和 Unity 事件系统](#5.1.类比 MQTT 和 Unity 事件系统)

[5.2.什么时候用 MQTT,什么时候用 Unity 事件?](#5.2.什么时候用 MQTT,什么时候用 Unity 事件?)


1.定义

MQTT 全称 Message Queuing Telemetry Transport(消息队列遥测传输协议) ,是一种基于发布/订阅模式的轻量级通讯协议。

2.核心工作原理

核心工作原理是发布/订阅模式。它不像传统打电话(点对点),而更像"订阅报纸"。

1)发布者 (Publisher):发送消息的设备或程序,它不关心谁在收。

2)订阅者 (Subscriber):接收消息的设备或程序,它不关心谁在发。

3)代理 (Broker):中间的"邮局"或"服务器",负责接收所有消息,并根据主题 (Topic) 转发给对应的订阅者。

3.核心概念与特性

3.1.主题 (Topic)

主题可以理解为消息的"地址",分层级,用 / 分隔。例如 sensor/floor1/temperature。订阅者可以使用通配符 + (单层) 或 # (多层) 来订阅一批主题。

3.2.服务质量 (QoS)

MQTT 保证消息可靠性的核心机制,共有三个级别:

1)QoS 0 (至多一次):消息发出后就不管了,可能丢失。适合不重要的传感器数据。

2)QoS 1 (至少一次):确保消息到达,但可能重复。适合大多数设备控制指令。

3)QoS 2 (恰好一次):确保消息只到达一次,开销最大。适合计费、告警等不能出错的关键场景。

3.3.轻量级与低功耗

MQTT 协议头部最小只有 2 字节,网络开销极小,非常适合计算能力有限、网络带宽差、电量有限的物联网设备。

3.4.遗嘱机制 (Last Will)

如果客户端异常断开,Broker 会自动发布一条预设的"遗嘱"消息,通知其他设备该设备已离线。

4.典型应用

MQTT 广泛应用于物联网设备监控、车联网、智能家居等领域。例如,工厂里的传感器通过 MQTT 将温度数据实时上报给云端,手机 App 作为订阅者可以即时看到这些数据。

5.MQTT 和 Unity 的事件系统

从设计模式的角度来看高度相似,它们都采用了 发布-订阅(Pub/Sub)模式。但它们在作用范围、底层机制和运行环境上有着本质的区别。

从设计模式的角度来看高度相似,仅限于"模型层面":

注册事件(监听事件) -> 订阅主题(Subscribe Topic)

响应(分发事件) -> 发布主题(Publish Topic)

在 Unity 中,事件机制是进程内(单机内存中)的通信;而 MQTT 是跨网络(不同设备、不同进程)的通信。

5.1.类比 MQTT 和 Unity 事件系统

|----------|--------------------------|--------------------------------------|
| 对比维度 | Unity 事件系统 | MQTT 协议 |
| 通信范围 | 仅限同一个 Unity 进程(或同一个应用域)内 | 跨进程、跨设备、跨网络(局域网/广域网) |
| 中间人 | 无(直接对象引用) | 必须有 Broker(消息代理服务器) |
| 生命周期 | 脚本销毁,事件自动失效 | 只要 Broker 在线,订阅者断线重连后仍能收到消息(取决于 QoS) |
| 消息格式 | 强类型 C# 对象(可以传复杂类) | 字节流(通常是 JSON、XML 或二进制) |
| 松耦合度 | 发布者需要持有订阅者对象的引用 | 发布者完全不知道订阅者是谁,只需要发给 Broker |
| 可靠性 | 如果不处理,异常会直接影响主线程 | 提供 QoS(0、1、2)机制,保证消息不丢或只丢一次 |

5.2.什么时候用 MQTT,什么时候用 Unity 事件?

|------------------------|------------------------------|
| 场景 | 推荐方案 |
| 同一 Unity 场景内,UI 与逻辑交互 | Unity 事件(轻量,直接,性能好) |
| Unity 与后端服务器通信 | 建议用 WebSocket / HTTP(如果已有后端) |
| Unity 与硬件设备通信(PLC、传感器) | MQTT(工业标准,稳定,支持断线重连) |
| 多台 Unity 客户端之间同步数据 | MQTT(通过 Broker 中转) |

相关推荐
木子n18 小时前
车载以太网与SOME/IP服务化通信实战-01.从字节到服务:SOME/IP报文解析与四通道开销账
网络·网络协议·tcp/ip·车载以太网·some/ip
Escalating_xu9 小时前
【C 语言】数据在内存中的存储:补码、大小端、整型陷阱与 IEEE 754 全解析
java·c语言·网络
爱跳舞的烤冷面10 小时前
Linux篇——网络编程
网络
Knight_AL11 小时前
基于 Netty 实现的 WebSocket 服务端
网络·websocket·网络协议
wuyk55512 小时前
《WiFi 嵌入式物联网开发全套实战》| 第 31 章 休眠唤醒 WiFi 断连、时间同步、网络恢复机制
网络·物联网·php
沫璃染墨12 小时前
从零入门计算机网络系列(一):计算机网络初识——从网络发展史到TCP/IP协议》
linux·网络·网络协议·tcp/ip·计算机网络
王大傻092813 小时前
堆叠注入(Stacked Queries Injection)详解:原理、利用与防御
服务器·网络·数据库·web安全·网络安全
艾芯微科技13 小时前
钰泰 ETA5055V330DD1E|SOT-223 3.3V LDO,低压差、大电流线性稳压选型分享
网络·单片机·嵌入式硬件·集成测试·51单片机
bigcarp13 小时前
安卓模拟器MUMU+tcpdump抓包Socket协议流量
服务器·网络·tcpdump
是个西兰花13 小时前
TCP套接字编程实战:从服务器搭建到多进程处理
服务器·网络协议·tcp/ip