优化代码
我是服务端开发,这里注重服务端的讲解
- 将helloWorld中的匿名handle提炼出去,起名为IOHandler。
- handler设计为责任链模式,所以可以添加多个
.childHandler(new ChannelInitializer<SocketChannel>() { // 添加一个EchoServerHandle到Channel的ChannelPipline
@Override
protected void initChannel(SocketChannel socketChannel) throws Exception {
socketChannel.pipeline().addFirst(new IOChandler());
socketChannel.pipeline().addLast(new SecondChandler());
}
});
- inhandler是顺序进入pipeline(),顺序解析
- outhandler是顺序进入pipeline(),逆序出来
- inhandler使用ctx.fireChannelRead(msg),传递给下一个inhandler,
- outhandler使用ctx.write(msg,promise)传递给下一个outhandler
- 所有的inhandler的最后一个使用ctx.writeAndFlush(msg)触发给outhandler
本章节详细代码:https://gitee.com/gtxg/netty-learn.git