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
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
推荐阅读更多精彩内容
- 前言 接到任务项目需要用MQTT来写消息推送,经过一段时间在网上查看资料后写下这篇文章,文章内容大都来自互联网,在...