跳转至

延伸介绍

六、延伸介绍->通信承载

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,用于文件上传等场景。