decode执行完发又重新进入了decode,而且读到的数据也不对了,后来发现是又进入了一次decode,这是netty的一个坑就是decode没把输入的Bytebuf,读取完,就会一直进入decode;
解决办法就是:
如果你确实不需要读取完又想让pipline进入到handler里,你只需要跳过Bytebuf里的全部剩余可读数据;
代码如下:
ByteBuf buf......//这是框架传入的数据
buf.skipBytes(buf.readableBytes());
在使用Netty时遇到ByteToMessageDecoder的decode方法重复执行的问题,原因是输入的Bytebuf未完全读取。解决办法是在处理完数据后跳过Bytebuf的所有剩余可读数据,以确保Pipeline能正常进入下一个handler。
decode执行完发又重新进入了decode,而且读到的数据也不对了,后来发现是又进入了一次decode,这是netty的一个坑就是decode没把输入的Bytebuf,读取完,就会一直进入decode;
解决办法就是:
如果你确实不需要读取完又想让pipline进入到handler里,你只需要跳过Bytebuf里的全部剩余可读数据;
代码如下:
ByteBuf buf......//这是框架传入的数据
buf.skipBytes(buf.readableBytes());
412
1356
987
327
2万+

被折叠的 条评论
为什么被折叠?