# websocket通讯格式逻辑说明 ## 消息体有四种格式 1. 主机发送的请求 (0x01) 2. 服务端对主机请求的响应 (0x02) 3. 服务端对主机的消息推送 (0x03) 4. 主机对服务器推送消息的响应 (0x04) ## 消息体的格式说明 <<消息体类型/1byte, PacketId/4byte, Packet/任意长度>> ## 特殊说明 * 服务器端处理异常时,直接关闭websocket连接 ## 消息类型说明 ### register消息, #### 请求 <<0x01, PacketId:4, Method:1, Body:任意长度>> PacketId: 4字节整数, 值必须大于0; Method: 0x00 Body: {uuid: string, salt: string, username: string, token: string}, json序列化后的二级制数据,明文 ### 响应 <<0x02, PacketId:4, Reply>> Reply: {code: 1, message: "ok"} ### create_session消息 #### 请求 <<0x01, PacketId:4, 0x01, PubKey:任意长度(公钥信息)>> PacketId: 4字节整数, 值必须大于0; #### 响应 <<0x02, PacketId:4, Reply>> Reply: {a: bool, aes: "服务器生成的aes的值"} ### data数据上传(无响应) <<0x01, PacketId:4, 0x02, Body:任意长度>> PacketId: 4字节整数, 值为0; ### ping数据上传(无响应) <<0x01, PacketId:4, 0x03, Body:任意长度>> PacketId: 4字节整数, 值为0; Body: 公钥信息 ### inform数据上传(无响应) <<0x01, PacketId:4, 0x04, Body:任意长度>> PacketId: 4字节整数, 值为0; Body: 公钥信息 ### feedback_step数据上传(无响应) <<0x01, PacketId:4, 0x05, Body:任意长度>> PacketId: 4字节整数, 值为0; Body: 公钥信息 ### feedback_result数据上传(无响应) <<0x01, PacketId:4, 0x06, Body:任意长度>> PacketId: 4字节整数, 值为0; Body: 公钥信息 ### data北向数据上传 (无响应) #### 微服务产生的数据,点位信息为主机的点位信息 <<0x01, PacketId:4, 0x08, 0x00, Body:任意长度>> PacketId: 4字节整数, 值为0; #### 终端设备产生的数据,点位信息为设备信息点位信息 <<0x01, PacketId:4, 0x08, Type:1byte, Body:任意长度>> PacketId: 4字节整数, 值为0; Type: 第一bit为1,后7个bit标识后面的device_uuid的长度, 即: <<1:1, Len:7>>, 总共8个bit