博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
基于NIO的消息路由的实现(二)通讯协议
阅读量:6674 次
发布时间:2019-06-25

本文共 1298 字,大约阅读时间需要 4 分钟。

hot3.png

通讯协议可以根据自己的需要任意定义。我的定义如下:

一、术语定义:

名称

解释

备注

通道

指一个socket的连接通路

程序中,一般指SocketChannel

令牌

服务端用以区分连接通道的唯一标识

 

报文

指上行到达通讯主线程的通讯包

Packet

指令

指通讯主线程要发送给对端的下行通讯包

Order

二、规约(需仔细阅读)

所有报文和指令均有字符串组成,分为四个部分:

1、指令(报文)标记,大写英文字母,每一类指令(报文)都有自己唯一的标记;

2、指令(报文)流水号Rid;主动发起的指令,自动生成,最大1000000000,循环反复。被动响应的指令,为请求方的Rid回填。

3、指令(报文)Token,自动生成UUID;

4、指令体(报文);

除指令标记和指令流水号之外,其他两项内容,根据不同的指令(或报文),会有取舍;各部分之间以“|”作为分隔符。

例如:T|128|6e7805ec-8487-4ace-9c1e-cb715888b67f

5、所有报文传输,均采用UTF-8;

6、报文中包含中文,请用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

三、服务端报文

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

转载于:https://my.oschina.net/u/2397619/blog/493779

你可能感兴趣的文章
mvc 做伪静态另外一个方法
查看>>
apache中文乱码;mod_rewrite: could not create rewrite_log_lock Configuration Failed
查看>>
android面试题及答案
查看>>
Linux下全局符号覆盖问题
查看>>
【iScroll源码学习02】分解iScroll三个核心事件点
查看>>
【流量劫持】SSLStrip 的未来 —— HTTPS 前端劫持
查看>>
UML图学习之三 状态图
查看>>
JAVA Oauth 认证服务器的搭建
查看>>
python的模式匹配 - 正则表达式
查看>>
新浪微博客户端(24)-计算原创微博配图frame
查看>>
macOS SIP 权限设置
查看>>
使用Cubic Spline通过一组2D点绘制平滑曲线
查看>>
读Ext之八(原生事件对象的修复及扩充)
查看>>
权限设计的三层境界续
查看>>
蓝点中文_Linux2.0 实验九 目录与文件管理 (一)
查看>>
构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(16)-权限管理系统-漂亮的验证码...
查看>>
【总目录】本博客博文总目录-实时更新
查看>>
Razor语法大全
查看>>
Serlvet学习笔记之二—不同页面共享数据
查看>>
Css3 - 动画旋转
查看>>