关于回调到initChannel

来源:6-3 添加ChannelHandler

慕数据5174071

2020-02-04

老师,有个问题请教下

添加channelhandler的入口,是在用户代码的initChannel中的ch.pipeline. add()方法添加完之后,又回调到了initChannel。这个应该怎么理解呢?

是不是因为用户代码中添加了多个handler(有多行 ch.pipeline.add),所以每添加一个都要回调回去,把后面的handler都给添加了,是这么理解吗。

那用户代码的initChannel最开始是在什么时候触发的呢

写回答

1回答

闪电侠

2020-02-07

initChannel 是在 channel 初始化的时候调用的哦,步骤是:

用户代码在往 channel 中,添加一个 ChannelInitializer,然后 channel register 成功之后,会回调这个 ChannelInitializer 的 init 方法,这个 init 方法的作用就是把用户实际的 handler 给添加到 handler,然后结束,可以参考 ChannelInitializer 的 channelRegistered 方法

0
1
慕九州6436962
pipeline.addLast回调的是io.netty.channel.ChannelHandlerAdapter#handlerAdded方法 initChannel回调的是用户代码childHandler里ChannelInitializer的handlerAdded方法
2020-10-30
共1条回复

Java读源码之Netty深入剖析

解析netty各大组件细节,百万级性能调优,设计模式实际运用

2334 学习 · 283 问题

查看课程