一、MQTT简介
MQTT翻译过来叫消息队列遥测传输是基于发布和订阅范式的消息协议,它工作在TCP/IP协议族上,是为硬件性能低下的远程设备以及网络状况糟糕的情况下二设计的发布/订阅型消息协议。
MQTT协议是为大量计算能力有限,且工作在低带宽,不可靠网络的远程传感器和控制设备通讯而设计的协议具有以下特性:
1、使用发布/订阅消息模式,提供一对多的消息发布,接触应用程序耦合
2、对负载内容屏蔽的消息传输
3、使用TCP/IP提供网络链接
4、有三种消息发布的服务质量
5、小型传输,开销很小(固定长度的头部2byte)协议交换最小化,以降低网络流量;
6、使用last will和testament特性通知相关客户端异常中断的机制
二、项目运用
本人在项目中基于MQTTClient三方库进行实战
思路如下:
用户登录后就开启mqtt等登录和订阅操作,会在代理中接收到订阅的消息。这个消息是有服务端推送的服务过来的,通常是一段json字符串。用户在退出的时候断开订阅消息。
针对每个用户设定唯一的订阅key 和value,这样做的目的就是为了防止多播的场景。在收到消息的时候针对消息体的token进行配对,如果token匹配上是用户订阅的消息,那就进行相应业务处理。
当服务器收到心跳断开的消息就不再给客户端发送一些消息。
当用户退出登录、token失效、App进入到后台断开mqtt链接
当用户登录成功、进入到前台的时候就链接mqtt
当收到mqtt的消息过来的时候根据业务场景选择展示本地推送还是静默去转发消息。
三、参考资料