- 十一、消息分割类
- 10.1 消息分割判断类
- 判断消息是否可分割,用于分割消息,解决消息粘包的问题(代码中包含 HTTP协议,字符串换行,定长报文的粘包实现)。
- 10.1 消息分割判断类
- 10.2 默认消息分割类说明
- 按定长消息分割
- 10.3 Http 消息分割类
- 10.4 按换行对消息分割
- 10.5 按消息超时时间进行分割
十一、消息分割类
10.1 消息分割判断类
org.voovan.network.MessageSplitter
判断消息是否可分割,用于分割消息,解决消息粘包的问题(代码中包含 HTTP协议,字符串换行,定长报文的粘包实现)。
消息粘包的分割方式:
- 消息分割器生效,则返回报文。
int canSplite(IoSession session, ByteBuffer byteBuffer)
- 过滤器解密函数,接收事件(onRecive)前调用。
- session: Socket 会话对象。
- buffer: 缓冲数据。
- 返回值: 截取消息的长度,MessageLoader会根据这个长度来截取消息。buffer参数中这个长度的字节将会交给过滤器来处理。
10.2 默认消息分割类说明
默认消息分割器使用说明:
按定长消息分割
org.voovan.network.messagesplitter.BufferLengthSplitter
public BufferLengthSplitter(long bufferLength)
- 构造函数
- bufferLength: 消息分割的长度。
- 按照传入的长度参数进行消息分割。
10.3 Http 消息分割类
org.voovan.network.messagesplitter.HttpMessageSplitter
public HttpMessageSplitter()
- 构造函数
- 自动按照 HTTP 报文的格式进行分割。
10.4 按换行对消息分割
org.voovan.network.messagesplitter.LineMessageSplitter
public LineMessageSplitter()
- 构造函数
- 自动按照报文的换行符进行分割。
10.5 按消息超时时间进行分割
org.voovan.network.messagesplitter.TimeOutMesssageSplitter
public TimeOutMesssageSplitter()
- 构造函数
- 自动按消息超时时间进行分割,及连续读取为0的时间进行记录并分割。