• 十一、消息分割类
    • 10.1 消息分割判断类
      • 判断消息是否可分割,用于分割消息,解决消息粘包的问题(代码中包含 HTTP协议,字符串换行,定长报文的粘包实现)。
  • 10.2 默认消息分割类说明
  • 按定长消息分割
  • 10.3 Http 消息分割类
  • 10.4 按换行对消息分割
  • 10.5 按消息超时时间进行分割

    十一、消息分割类

    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的时间进行记录并分割。