请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

关于回调到initChannel

老师,有个问题请教下

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

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

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

正在回答 回答被采纳积分+3

1回答

闪电侠 2020-02-07 11:27:49

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

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

0 回复 有任何疑惑可以回复我~
  • pipeline.addLast回调的是io.netty.channel.ChannelHandlerAdapter#handlerAdded方法
    
    initChannel回调的是用户代码childHandler里ChannelInitializer的handlerAdded方法
    回复 有任何疑惑可以回复我~ 2020-10-30 11:44:06
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信