Netty 核心组件 ChannelPipeline 梳理
一、概念
1.在 Netty 中每个 Channel 都有且仅有一个 ChannelPipeline 与之对应;
2.ChannelPipeline,相当于 ChannelHandler 的集合;是 AbstractChannelHandlerContext 实现的一个双向链表
AbstractChannelHandlerContext 实现了 ChannelHandlerContext 接口
入站事件,从链表头向尾依次传递
出站事件,从链表尾向头依次传递
(头与尾是相对概念,理解数据流是在管道内依次传递即可)
3.管道会带有一个默认的头尾节点
4.常用方法:
从头添加: ChannelPipeline addFirst(String name, ChannelHandler handler);
从指定位置前面加入:ChannelPipeline addBefore(String baseName, String name, ChannelHandler handler);
从指定位置后面加入:ChannelPipeline addAfter(String baseName, String name, ChannelHandler handler);
从尾加入: ChannelPipeline addLast(String name, ChannelHandler handler);
二、断点调试
1.插入语句
pipeline.addLast("mid",new HttpServerCodec());
pipeline.addAfter("mid","after",new NettyServerHttpHandler());
pipeline.addBefore("mid","before",new HttpClientCodec());
2.从头向尾

3.从尾向头

还没有评论,来说两句吧...