第三章 MQTT-SN vs MQTT
MQTT-SN设计得尽可能靠近MQTT,但设计得更适应无线通信环境,例如低带宽高连接失败,消息长度短等情形,也适应于低成本,电池驱动存储资源有限的设备。
相比MQTT,MQTT-SN有如下显著特征:
1. CONNECT message被分为3小messages,后面2个message被用来传递到server的Will topic和Will message。
2. 因为无线通信的低带宽,所以用两个字节的topic id替换PUBLISH中的topic name,客户端向server/gateway注册topic name并获得对应的topic ids;注册也可以是反方向的,即server/gateway通过注册过程告知client相关topic name和topic id,以在后续的PUBLISH包含正确的topic id。
3. 如果没有注册过程,则也可以使用pre-defined方法定义topic ids,这些topic ids映射到server/gataway和client都知道的topic name。次外,可以使用两个字节固定长度的short
topic name,short topicname可以直接包含在PUBLISH中,同样不需要注册过程。
4. 利用discovery过程,client可以发现server/gateway的网络地址,而不用提前配置server/gateway的网络地址,这样可以灵活使用多个不同的gataway。
5. clean session被扩展到Will功能,不仅仅在client的订阅中出现,在Will topic和Will message中也会出现,在一个seesion内client可以修改Will topic和Will message。
6. 定义了脱机下的keep-alive以支持休眠的client,电池驱动的client在休眠过程中,server/gataway暂存发往该client的包,等待其苏醒后再将包发出。