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. 新的保活流程被定义来支持休眠客户端。使用这种流程,电池驱动的设备可以转入休眠状态,服务端/网关会缓存所有发送给它们的消息,并在它们唤醒时再发送给它们。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • MQTT-SN的一个重要设计原则是尽可能与MQTT相近。因此,所有的协议语义应保持尽可能与MQTT中定义的一致。接...
    aded3e27ac95阅读 868评论 0 2
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,080评论 19 139
  • 导语 翻译自iot in five days 8.2 MQTT是什么?MQTT(formerly MQ Telem...
    happy1993阅读 6,577评论 1 14
  • 序 本篇会把连接(CONNECT)、心跳(PINGREQ/PINGRESP)、确认(CONNACK)、断开连接(D...
    技术学习阅读 9,961评论 0 8
  • 前言 接到任务项目需要用MQTT来写消息推送,经过一段时间在网上查看资料后写下这篇文章,文章内容大都来自互联网,在...
    Hank_Zhong阅读 16,680评论 69 51