通信协议能够根据本身的须要任意定义。个人定义以下: socket
1、术语定义: spa
名称 线程 |
解释 ci |
备注 字符串 |
通道 it |
指一个socket的链接通路 table |
程序中,通常指SocketChannel 登录 |
令牌 循环 |
服务端用以区分链接通道的惟一标识 请求 |
|
报文 |
指上行到达通信主线程的通信包 |
Packet |
指令 |
指通信主线程要发送给对端的下行通信包 |
Order |
2、规约(需仔细阅读)
全部报文和指令均有字符串组成,分为四个部分:
1、指令(报文)标记,大写英文字母,每一类指令(报文)都有本身惟一的标记;
2、指令(报文)流水号Rid;主动发起的指令,自动生成,最大1000000000,循环反复。被动响应的指令,为请求方的Rid回填。
3、指令(报文)Token,自动生成UUID;
4、指令体(报文);
除指令标记和指令流水号以外,其余两项内容,根据不一样的指令(或报文),会有取舍;各部分之间以“|”做为分隔符。
例如:T|128|6e7805ec-8487-4ace-9c1e-cb715888b67f
五、全部报文传输,均采用UTF-8;
六、报文中包含中文,请用Base64转码后发送;
服务端指令
1. 分配令牌
当客户端链接到服务端以后,服务端第一时间生成令牌,并下发此指令告知客户端。
类别 |
定义 |
备注 |
标记 |
T |
|
流水号 |
自动生成,最大1000000000,循环反复 |
(例如:21 |
Token |
UUID |
6e7805ec-8487-4ace-9c1e-cb715888b6 |
示例:
T|128|6e7805ec-8487-4ace-9c1e-cb715888b67f |
2. 错误
类别 |
定义 |
备注 |
标记 |
E |
|
流水号 |
自动生成,最大1000000000,循环反复 |
(例如:21 |
Body |
Json,内含errCode,errMsg两个属性 |
{"errCode" : "1","errMsg" : "无效请求"} |
示例:
E|128|{"errCode" : "1","errMsg" : "无效请求"} |
3. 回应
类别 |
定义 |
备注 |
标记 |
R |
|
流水号 |
是对应上行报文的Rid |
(例如:21 |
示例:
R|102 |
3、服务端报文
1. 回应
类别 |
定义 |
备注 |
标记 |
R |
|
流水号 |
是对应上行报文的Rid |
(例如:21 |
Token |
|
|
示例:
R|102|6e7805ec-8487-4ace-9c1e-cb715888b67f |
2. 维持链路
类别 |
定义 |
备注 |
标记 |
K |
|
流水号 |
是对应上行报文的Rid |
(例如:21 |
Token |
|
|
示例:
K|102|6e7805ec-8487-4ace-9c1e-cb715888b67f |
3. 客户端登陆
类别 |
定义 |
备注 |
标记 |
L |
|
流水号 |
是对应上行报文的Rid |
(例如:21 |
Token |
用户的令牌 |
|
Body |
用户的身份标记 |
此处为客户的业务身份标记,好比用户的系统帐号,手机号等等 |
示例:
L|102|6e7805ec-8487-4ace-9c1e-cb715888b67f|13898482867 |