99 lines
2.4 KiB
Markdown
99 lines
2.4 KiB
Markdown
# 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, Body:任意长度>>
|
||
|
||
PacketId: 4字节整数, 值为0;
|
||
Body: 事件内容,AES加密
|
||
|
||
```text
|
||
|
||
设备的离在线状态
|
||
|
||
{
|
||
"event_type": 1,
|
||
"params": {
|
||
"device_uuid": "",
|
||
"status": 0 // 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 |