延伸介绍
六、延伸介绍->通信承载
TCP
TCP server 收到数据后,直接发起写入数据库动作。
TCP server 在接受了 socket 连接后,等待设备的鉴权请求,如果超时或者鉴权请求不通过,主动发起断链。
MQTT
MQTT 角色
有三个角色:设备,Broker,ServClient。
MQTT 主题
ServClient 订阅所有主题,设备只订阅跟自己相关的主题。
设备的主题名字为:/AirCloud/direction/DeviceID/ServType
其中,AirCloud 是固定字符串; direction 是传输方向: - up:上行方向,表示从设备到服务器的通信 - down:下行方向,表示从服务器到设备的通信
DeviceID 是设备的 ID,内容和消息头的设备 ID 相同;
ServType 包括两种: - auth:鉴权报文 - all:所有其他报文
鉴权
设备和Broker建立MQTT 连接后,首先设备要发起鉴权,Broker把鉴权请求转发给ServClient,ServClient审核后,回复鉴权通过或者鉴权失败。
如果回复的是鉴权失败,ServClent需要在10秒钟之内通知Broker,把发起鉴权的设备进行断链处理。
如果设备超时没有发起鉴权,ServClient也要通知Broker,把设备断链。
UDP
AirCloud 当前不推荐 UDP 协议。
如果必须要用 UDP 的话,需要在消息标识的第 6 个 bit 设为 1, 并在消息头和 TLV 中间,放置 64 字节的 key。
服务器需要对每个 UDP 消息,进行 key 的合法性检查。
HTTP
通过 getip 获取的上报 url,用于文件上传等场景。