iot/docs/websocket.md
2023-08-14 11:24:18 +08:00

86 lines
2.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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: 公钥信息
### 主机上传终端设备的在线或离线事件
<<0x01, PacketId:4, 0x07, DeviceUUID:32/binary, Status:1>>
PacketId: 4字节整数, 值为0;
DeviceUUID: 设备32位UUID
Status: 1字节整数1表示在线0表示离线
### 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