十一、消息分割类

10.1 消息分割判断类

org.voovan.network.MessageSplitter

判断消息是否可分割,用于分割消息,解决消息粘包的问题(代码中包含 HTTP协议,字符串换行,定长报文的粘包实现)。

消息粘包的分割方式:

  • 消息分割器生效,则返回报文。
  1. int canSplite(IoSession session, ByteBuffer byteBuffer)
  • 过滤器解密函数,接收事件(onRecive)前调用。
  • session: Socket 会话对象。
  • buffer: 缓冲数据。
  • 返回值: 截取消息的长度,MessageLoader会根据这个长度来截取消息。buffer参数中这个长度的字节将会交给过滤器来处理。

10.2 默认消息分割类说明

默认消息分割器使用说明:

按定长消息分割

org.voovan.network.messagesplitter.BufferLengthSplitter

  1. public BufferLengthSplitter(long bufferLength)
  • 构造函数
  • bufferLength: 消息分割的长度。
  • 按照传入的长度参数进行消息分割。

10.3 Http 消息分割类

org.voovan.network.messagesplitter.HttpMessageSplitter

  1. public HttpMessageSplitter()
  • 构造函数
  • 自动按照 HTTP 报文的格式进行分割。

10.4 按换行对消息分割

org.voovan.network.messagesplitter.LineMessageSplitter

  1. public LineMessageSplitter()
  • 构造函数
  • 自动按照报文的换行符进行分割。

10.5 按消息超时时间进行分割

org.voovan.network.messagesplitter.TimeOutMesssageSplitter

  1. public TimeOutMesssageSplitter()
  • 构造函数
  • 自动按消息超时时间进行分割,及连续读取为0的时间进行记录并分割。