channelHandler生命周期图
可以看到这里的ChannelHandler
的顺序如下:
handlerAdded()
–> channelRegistered()
–> channelActive()
–> channelRead()
–> channelReadComplete()
–> channelInactive()
–> channelUnregistered()
–> handlerRemoved()
每个回调方法的具体含义如下:
handlerAdded()
: 当检测到新的连接之后,调用ch.pipeline().addLast(new LifeCycleTestHandler())
之后的回调,表示当前的channel中已经成功添加了一个逻辑处理器channelRegistered()
: 表示当前的 channel 的所有的逻辑处理已经和某个 NIO 线程建立了绑定关系channelActive()
: 当 channel 的 pipeline 中已经添加完所有的 handler 以及绑定好一个NIO线程之后,这条连接算是真正激活了,接下来就会回调这个方法channelRead()
: 客户端向服务端每次发来数据之后,都会回调这个方法,表示有数据可读channelReadComplete()
: 服务端每次读完一次完整的数据之后,都会回调这个方法,表示数据读取完毕channelInactive()
: 表示这条连接被关闭了channelUnregistered()
: 表明与这条连接对应的 NIO 线程移除掉对这条连接的处理handlerRemoved()
: 最后把这条连接上的所有逻辑处理器全部移除掉