Skip to content
阅读进度

MQTT 与 WebSocket,为什么不能当作同一类协议? ​

返回 架构与 SDK 目录

标准回答 ​

MQTT 定义了经 Broker 发布、订阅消息的规则;WebSocket 提供双向通信通道,具体业务消息通常要自己约定。MQTT 还可以运行在 WebSocket 上,所以两者可以组合使用。

  • QoS 0、1、2 分别对应协议定义的至多一次、至少一次和恰好一次投递语义。
  • QoS 不自动等于端到端业务恰好执行一次,仍要设计命令 ID、反馈和持久化边界。
  • 遗嘱消息可帮助感知异常离线;保留消息、会话和过期策略要按用途配置,防止旧命令被误执行。

通俗例子 ​

设备把电量发布到 devices/A17/battery,订阅者收到更新;MQTT 的 QoS 1 可能重复投递。如果消息是“执行一次动作”,业务必须按 commandId 去重,不能收到几遍就执行几遍。

深入解释 ​

**Broker 是什么:**Broker 是消息中转服务。设备向某个主题发布消息,Broker 按订阅关系转给其他客户端,发送方无需逐个知道所有接收方地址。

**QoS 为什么不等于动作成功:**QoS 约束协议中的消息投递,设备业务处理是后续动作。即使投递保证更强,仍需 commandId、执行状态和结果反馈,才能判断控制是否完成或重复。

易混淆点 ​

连接还在不代表设备工作正常;危险或有时效的动作不能把旧消息当成新指令。

参考资料 ​

内容来源 ​

用完整回答理解机制,用真实证据解释项目。