Netty ChannelPipeline动态修改ChannelHandler
Netty ChannelPipeline动态修改ChannelHandler
lykin1972 发表于2年前
Netty ChannelPipeline动态修改ChannelHandler
  • 发表于 2年前
  • 阅读 402
  • 收藏 0
  • 点赞 2
  • 评论 0

标题:腾讯云 新注册用户域名抢购1元起>>>   

摘要: 在某些情况下 ,我们需要给客户端连接加上定制化的ChannelHandler,不同的管制【转载请注明原处】


在某些情况下 ,我们需要给客户端连接加上定制化的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 之前

然后就大功搞成了


标签: Netty
共有 人打赏支持
粉丝 0
博文 8
码字总数 3986
×
lykin1972
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: