通信協議能夠根據本身的須要任意定義。個人定義以下: 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 |