sdlan-rs/docs/protocol.md
2024-02-17 23:16:04 +08:00

43 lines
1.8 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.

# sdlan交互协议
sdlan协议的总体格式如下
```
+-----------+------------+--------+----------+
| 2字节的长度 | 2字节消息id | 消息头 | 消息体 |
+-----------+------------+--------+----------+
```
## 长度
2字节长度包含后面的所有字节的长度不包括自身
## 消息id
用于匹配请求和响应占用2字节目前可以都先填写0
## 消息头
在sdlan中有一个common头使用二进制协议消息头主要包含了协议版本消息来源id从哪个节点发出的节点标识消息ttl以及一些协议的flagflag标志以后可以扩充
消息头二进制格式如下:
```
+---------+----+-----+------+-----+
| version | id | ttl | flag | pc |
+---------+----+-----+------+-----+
```
其中version占用一个字节用于标识协议版本。id用于唯一标识某个客户端为长度为32字节的uuid之后的ttl占用一个字节当ttl为0则直接丢弃该数据包。后面的flag占用2字节用于标识数据包属性目前拥有的标识如下
* `from_sn`: `0x0020`,表示这个数据包是从服务端发送过来的。
* `socket`: `0x0040`表示这个数据包里面包含了socket信息待定因为后面实际的数据包使用了json这个标识应该没用了
最后的pc表示后面数据包的类型目前数据包类型如下
* `0` —— `invalid pkt type`,表示无效的数据包类型
* `1` —— `register super`,表示客户端像服务端发送的注册请求
* ... TODO
## 消息体
消息提根据协议头中的pc不同拥有不同的结构结构体在json化之后添加到消息体的位置。
### RegisterSuper
`register super`表示客户端像服务端发送的注册请求该请求每隔15-20秒发送一次