3 MQTT-SN vs MQTT

MQTT-SN在设计时尽量靠近MQTT,但仍需修改以适配无线通信环境的带宽低、链接失败率高、消息长度短等特性。它同时也为在低成本、电池驱动、有限处理和存储资源的设备上的实现做了优化。
  和MQTT相比,MQTT-SN的特点体现在以下差异上:
  1. CONNECT消息被拆分为3个消息。新增的两个消息是可选的,被用于向服务传输Will topic和Will message。
  2. 为了应对短消息长度和无线网络中有限的传输带宽,PUBLISH消息中的主题名称被替换为一个短至2字节长度的“topic id”。注册流程被定义来允许客户端向服务端/网关注册它们的主题名称以得到相应的topic id。注册流程同样被用于相反过程,向客户端通知接下来的PUBLISH消息中topic id对应的主题名称。
  3. 在无注册流程需求的情况下,可以引入预定义topic id和短主题名称。预定义topic id也是2字节长度,但客户端应用和网关/服务端已经先行知道其对应的主题名称。因此,双方可以直接使用预定义topic id,而不用像上述普通topic id一样执行注册流程。
  短主题名是一种固定2字节长度的主题名。它们短到可以和数据一起放到PUBLISH消息中。和预定义topic id一样,短主题名同样不需要注册流程。
  4. 发现流程帮助未预配置服务端/网关地址的客户端发现正在执行中的服务端/网关的真实网络地址。在同一无线网络中,同时可以有多个网关,它们可以共同运行在负载均衡模式或备用模式。
  5. “clean session”范围被扩展到Will功能上,比如,不仅客户端的订阅信息会被持久化,Will topic和Will message也会被持久化。在会话期间,客户端同时也可修改Will topic和Will message。
  6. 新的保活流程被定义来支持休眠客户端。使用这种流程,电池驱动的设备可以转入休眠状态,服务端/网关会缓存所有发送给它们的消息,并在它们唤醒时再发送给它们。

你可能感兴趣的:(3 MQTT-SN vs MQTT)