服务器配置为:
b.group(bossGroup, workerGroup)
.channel(NioServerSocketChannel.class)
.childHandler(new ChannelInitializer<SocketChannel>() {
@Override
public void initChannel(SocketChannel ch) throws Exception {
ChannelPipeline p = ch.pipeline();
p.addLast(new DelimiterBasedFrameDecoder(20, Delimiters.lineDelimiter()));
p.addLast(new StringDecoder());
p.addLast(new StringEncoder());
p.addLast(new JdkZlibEncoder());
p.addLast(new LengthFieldPrepender(2));
p.addLast(new MyExecutor());
}
});
正在执行字符串编码器,但我认为ZLib编码器和LengthFieldPrepender会被执行吗?他们不是。
我的处理程序内容非常简单:
@Override
public void channelRead0(ChannelHandlerContext ctx, String message) throws Exception {
if (message.equals("A")) {
ctx.writeAndFlush("B");
return;
}
if (messageStr.equals("B")) {
ctx.writeAndFlush("A");
return;
}
}
我收到的是一个字符串:&#34; A&#34;,我发送&#34; B&#34;,但我希望Netty真的发送&#34; 1 XX&#34;,其中1是大小,XX是ZLIB编码的内容。
这有什么意义吗?为什么编码器没有链接?