ChannelPipeline的addLast方法将按照顺序进行处理,第一个会先被处理, 如果业务被处理并返回给客户端,将不再进行下一个handler的处理,不然需要调用ChannelHandlerContext的fireChannelRead()方法 将控制权交给下一个handler进行处理。所以最好把第一个做业务分发操作。
ChannelHandlerContext的writeAndFlush()方法是写入数据并且发送数据:writeAndFlush方法方法的原理是执行write()后执行flush()方法。
参考io.netty.channel.DefaultChannelHandlerContext 的737行
@Override
public ChannelFuture writeAndFlush(Object msg, ChannelPromise promise) {
ChannelFuture future = write(msg, promise);
flush();
return future;
}
ChannelHandlerContext的fireChannelRead()方法是把处理权交给下一个业务handler去处理。
