基於NIO的消息路由的實現(二)通信協議

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

{"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

相關文章
相關標籤/搜索