文档章节

Netty ChannelPipeline动态修改ChannelHandler

l
 lykin1972
发布于 2016/04/14 16:55
字数 249
阅读 452
收藏 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
岳阳
私信 提问
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
第六章:ChannelHandler

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

李矮矮
2016/09/26
24
0
netty io.netty.channel介绍2

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

andyyuan5546
2015/08/13
0
0
Netty in Action ——— Netty的组件和设计

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

tomas家的小拨浪鼓
2017/11/06
0
0
读懂Netty服务端开发(附学习代码)

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

@林文龙
06/14
0
0

没有更多内容

加载失败,请刷新页面

加载更多

探索802.11ax

802.11ax承诺在真实条件下改善峰值性能和最差情况。 如何改善今天的Wi-Fi? 在决定如何改进当前版本以外的Wi-Fi时,802.11ac,IEEE和Wi-Fi联盟调查了Wi-Fi部署和行为,以确定更广泛使用的障碍...

linuxprobe16
42分钟前
2
0
使用linux将64G的SDCARD格式化为FAT32

一、命令如下: sudo fdisk -lsudo mkfs.vfat /dev/sda -Isudo fdisk /dev/sda Welcome to fdisk (util-linux 2.29.2). Changes will remain in memory only, until you decide to wri......

mbzhong
今天
4
0
深入理解Plasma(四):Plasma Cash

这一系列文章将围绕以太坊的二层扩容框架,介绍其基本运行原理,具体操作细节,安全性讨论以及未来研究方向等。本篇文章主要介绍在 Plasma 框架下的项目 Plasma Cash。 深入理解Plasma(1):...

HiBlock
昨天
1
0
命令参数的三大风格:Posix、BSD、GNU

今天读到命令行中参数的风格有三大类,即Unix/Posix、BSD、GNU。分别有以下特征: Unix/Posix风格,即命令后的参数,可以分组,便必须以连字符开头,如ps -aux。 BSD风格,即命令后的参数,可...

大别阿郎
昨天
2
0
PHP生成图片验证码

PHP生成图片验证码 /** * PHP生成图片验证码 * Class VerifyImage */class VerifyImage{ // 生成随机字串 private $verifyCode; // 图片对象 private $image; /**...

DrChenXX
昨天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部