所有数据包分为包头和包数据两部分,数据包组成结构如下图所示:
包头结构表格(16进制)如下:
名称 | 类型 | 长度 | 描述 |
---|---|---|---|
固定位 | 数字 | 2字节 | 固定为 00 00 |
版本号 | 数字 | 1字节 | 现阶段固定为 01,当前版本为第一个版本 |
指令码 | 数字 | 1字节 | 当前版本可选为00/01/02/03/04/05/06/07/08/09/0A 这10种指令 |
包数据长度 | 数字 | 4字节 | 当前版本可选范围0000 0000 到 7FFF FFFF,换算为10进制为 0 到 2147483647 |
包头中的指令码用于表示数据包的类型,对照表如下所示:
指令码 | 包类型 | 描述 |
---|---|---|
00 | 心跳包 | 客户端至少每5分钟向服务端发送一个心跳包,服务端接收到后将会返回一个心跳返回包;如果没收到,服务端将会断开连接 |
01 | 心跳返回包 | 服务端给客户端的心跳返回包 |
02 | 同步开始包 | 客户端向服务端发送同步开始包,服务端收到后开始给客户端推送最新数据 |
03 | 同步开始返回包 | 服务端向客户端发送同步开始返回包,表示确认开始推送最新数据 |
04 | 同步结束包 | 客户端向服务端发送同步结束包后,服务端将会结束推送最新数据 |
05 | 同步结束返回包 | 服务端向客户端发送同步结束返回包,表示确认结束推送最新数据 |
06 | 最新数据包 | 服务端通过这个指令包的数据段将最新数据推送给客户端 |
07 | 登陆包 | 客户端通过这个指令获取token,验证身份,数据段是用户名和密码以英文逗号分隔的ASCII字符串 |
08 | 登陆成功包 | 服务端通过这个指令告知客户端登陆成功,并且数据段是当前有效token的ASCII字符串 |
09 | 权限不足包 | 服务端通过这个指令告知客户端权限不足,请正确获取token的ASCII字符串 |
0A | 错误包 | 服务端通过这个指令告知客户端发生错误 |