文档章节

Netty ChannelPipeline动态修改ChannelHandler

l
 lykin1972
发布于 2016/04/14 16:55
字数 249
阅读 478
收藏 0


在某些情况下 ,我们需要给客户端连接加上定制化的ChannelHandler,不同的管制


已知:我们会在ServerInitializer 的initChannel初始化ChannelPipeline 相关

在创建每一个连接  都会通过该初始化函数构造这一个与客户端的连接通道

如:

ChannelPipeline pipeline = ch.pipeline();
pipeline.addLast(new MessageDispatcherDecoder());
pipeline.addLast(ENCODER);
//pipeline.addLast(new IdleStateHandler(readerIdleTimeSeconds, writerIdleTimeSeconds, 0));
pipeline.addLast("idle_state",new IdleStateHandler(readerIdleTimeSeconds, 0, 0));
pipeline.addLast("server_hander",SERVER_HANDLER);

但是这些都是连接创建的时候初始化的

我们怎么在channelRead(message receive)里面去修改它呢?

比如我要给固定的某一些连接动态的增加一个写入超时?

如下:

ctx.pipeline().remove("idle_state");
ctx.pipeline().addBefore("server_hander","idle_state",
    new IdleStateHandler(readerIdleTimeSeconds, writerIdleTimeSeconds, 0));

先移出掉之前初始化添加的idle_state handler

然后创建一个新的 ,并且放在server_hander 之前

然后就大功搞成了


© 著作权归作者所有

共有 人打赏支持
l
粉丝 0
博文 8
码字总数 3986
作品 0
岳阳
私信 提问
第六章:ChannelHandler

本章介绍 ChannelPipeline ChannelHandlerContext ChannelHandler Inbound vs outbound(入站和出站) Netty提供了一个强大的处理这些事情的功能,允许用户自定义ChannelHandler的实现来处理数...

李矮矮
2016/09/26
24
0
Netty in Action ——— ChannelHandler 和 ChannelPipeline

本文是Netty文集中“Netty in action”系列的文章。主要是对Norman Maurer and Marvin Allen Wolfthal 的 《Netty in action》一书简要翻译,同时对重要点加上一些自己补充和扩展。 概要 Ch...

tomas家的小拨浪鼓
2017/10/30
0
0
netty io.netty.channel介绍2

Interface ChannelHandlerContext 上下文对象使得当前channelhandler可以与其所属的channelpipeline以及其他handler进行交互,可以通知所属channelpipeline中的下一个handler,也可动态修改其...

andyyuan5546
2015/08/13
0
0
第三章:Netty核心概念

这一章我们将讨论Netty的10个核心类。 Bootstrap ServerBootstrap EventLoop EventLoopGroup ChannelPipeline Channel Future ChannelFuture ChannelInitializer ChannelHandler 1.Crash Co......

李矮矮
2016/09/23
46
0
读懂Netty服务端开发(附学习代码)

使用JDK NIO类库时开发NIO的异步服务端时,需要用到:多路复用器Selector,ServerSocketChannel,SocketChanel,ByteBuffer,SelectionKey等。如果用源生的JAVA NIO搭建服务端,无疑是十分复杂的...

@林文龙
2018/06/14
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Scala学习(一)

学习Spark之前需要学习Scala。 参考学习的书籍:快学Scala

柠檬果过
10分钟前
0
0
了解Nginx

1. 安装Nginx 版本 nginx-1.14.0 如果想学习Java工程化、高性能及分布式、深入浅出。微服务、Spring,MyBatis,Netty源码分析的朋友可以加我的Java高级交流:854630135,群里有阿里大牛直播讲...

编程SHA
24分钟前
0
0
虚拟化 - KVM 和 Xen 比较

Linux虚拟化技术的用户目前有两种免费的开源管理程序可以选择:Xen和KVM。 作为较早出现的虚拟化技术,Xen是“第一类”运行在裸机上的虚拟化管理程序(Hypervisor),也是当前相当一部分商业...

临江仙卜算子
43分钟前
1
0
给windows server中的“未识别的网络”或“无法识别的网络”设置网络位置类型

在windows server中,如果网络没有被正确的识别,那么就需要手工设置一下网络位置类型。 将“公用网络”指定设置为“专用网络“ 【控制面板】--【系统和安全】--【管理工具】--【本地安全策略...

gugudu
今天
2
0
阿里强制要求的21条Java开发规范,可以避免很多坑

1. 【强制】避免通过一个类的对象引用访问此类的静态变量或静态方法,无谓增加编译器解析成本,直接用类名来访问即可。 2. 【强制】所有的覆写方法,必须加@Override注解。 说明:getObject...

天王盖地虎626
今天
12
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部