-
请求序号:基于双工协议,提供异步能力,也就是收到的异步消息需要找到前面的通信请求进行响应处理
-
消息长度
-
消息正文
协议定义
====
sessionId | reqType | Content-Length | Content |
其中Version
,Content-Length
,SessionId
就是Header信息,Content
就是交互的主体。
定义项目结构以及引入包
io.netty
netty-all
org.slf4j
slf4j-log4j12
org.projectlombok
lombok
项目结构如图4-1所示:
-
netty-message-mic : 表示协议模块。
-
netty-message-server :表示nettyserver。
图4-1
- 引入log4j.properties
在nettyMessage-mic中,包的结构如下。
定义Header
表示消息头
@Data
public class Header{
private long sessionId; //会话id : 占8个字节
private byte type; //消息类型:占1个字节
private int length; //消息长度 : 占4个字节
}
定义MessageRecord
表示消息体
@Data
public class MessageRecord{
private Header header;
private Object body;
}
OpCode
定义操作类型
public enum OpCode {
《一线大厂Java面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义》无偿开源 威信搜索公众号【编程进阶路】
BUSI_REQ((byte)0),
BUSI_RESP((byte)1),
PING((byte)3),
PONG((byte)4);
private byte code;
private OpCode(byte code) {
this.code=code;
}
public byte code(){
return this.code;
}
}
定义编解码器