采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
老师,有个问题请教下
添加channelhandler的入口,是在用户代码的initChannel中的ch.pipeline. add()方法添加完之后,又回调到了initChannel。这个应该怎么理解呢?
是不是因为用户代码中添加了多个handler(有多行 ch.pipeline.add),所以每添加一个都要回调回去,把后面的handler都给添加了,是这么理解吗。
那用户代码的initChannel最开始是在什么时候触发的呢
initChannel 是在 channel 初始化的时候调用的哦,步骤是:用户代码在往 channel 中,添加一个 ChannelInitializer,然后 channel register 成功之后,会回调这个 ChannelInitializer 的 init 方法,这个 init 方法的作用就是把用户实际的 handler 给添加到 handler,然后结束,可以参考 ChannelInitializer 的 channelRegistered 方法
pipeline.addLast回调的是io.netty.channel.ChannelHandlerAdapter#handlerAdded方法 initChannel回调的是用户代码childHandler里ChannelInitializer的handlerAdded方法
登录后可查看更多问答,登录/注册
解析netty各大组件细节,百万级性能调优,设计模式实际运用
1.9k 6
1.3k 6
1.1k 6
976 5
1.2k 5