bossGroup = new NioEventLoopGroup(1)
workerGroup = new NioEventLoopGroup
val bootstrap = new ServerBootstrap()
bootstrap.group(bossGroup, workerGroup)
.channel(classOf[NioServerSocketChannel])
.option[Integer](ChannelOption.SO_BACKLOG, 10000)
.option[java.lang.Boolean](ChannelOption.TCP_NODELAY, true)
.option[java.lang.Boolean](ChannelOption.SO_KEEPALIVE, true)
.childHandler(new ChannelInitializer[SocketChannel]() {
override def initChannel(ch: SocketChannel): Unit = {
val p = ch.pipeline
p.addLast(sslCtx.newHandler(ch.alloc))
val delimiter = Unpooled.copiedBuffer(Const.delimiter)
p.addLast(new DelimiterBasedFrameDecoder(204800, delimiter))
p.addLast(new ServerMsgDecoder)
p.addLast(new ServerMsgEncoder)
p.addLast(new ServerHandler)
}
})
ServerMsgDecoder extends from ByteToMessageDecoder.
But when I run my application, sometimes it will has some problem,the ServerMsgDecoder loop process the same one message
forever, and then my server is abnormal.
05-22 23:49:37.784 INFO ServerMsgDecoder - == 4^X�^@^@^@^M1463931910119
05-22 23:49:37.784 INFO ServerMsgDecoder - == 4^X�^@^@^@^M1463931910119
05-22 23:49:37.784 INFO ServerMsgDecoder - == 4^X�^@^@^@^M1463931910119
05-22 23:49:37.784 INFO ServerMsgDecoder - == 4^X�^@^@^@^M1463931910119
05-22 23:49:37.784 INFO ServerMsgDecoder - == 4^X�^@^@^@^M1463931910119
05-22 23:49:37.784 INFO ServerMsgDecoder - == 4^X�^@^@^@^M1463931910119
05-22 23:49:37.784 INFO ServerMsgDecoder - == 4^X�^@^@^@^M1463931910119
05-22 23:49:37.784 INFO ServerMsgDecoder - == 4^X�^@^@^@^M1463931910119
..........
..........
..........more and more same message
the '4^X�^@^@^@^M1463931910119' is in.toString which is the param of decode method in ServerMsgDecoder extends ByteToMessageDecoder
override def decode(
ctx: ChannelHandlerContext,
in: ByteBuf, out: util.List[AnyRef]
)
can someone help me? what happend? it caused by tcp packet splicing?