:::tips
在入站处理器中,要么调用**super.channelRead(ctx,msg),要么调用ctx.fireChannelRead(msg)**,必须调用其中一个将数据传递给下一个handler,否则调用链就会断掉
:::
下面列出了接口 ChannelInboundHandler 的生命周期方法。这些方法将会在数据被接收时或者与其对应的 Channel 状态发生改变时被调用。正如我们前面所提到的,这些方法和 Channel 的生命周期密切相关。
- channelRegistered 当 Channel 已经注册到它的 EventLoop 并且能够处理 I/O 时被调用
- channelUnregistered 当 Channel 从它的 EventLoop 注销并且无法处理任何 I/O 时被调 用
- channelActive 当 Channel 处于活动状态时被调用;Channel 已经连接/绑定并且已经就 绪
- channelInactive 当 Channel 离开活动状态并且不再连接它的远程节点时被调用
- channelReadComplete 当 Channel 上的一个读操作完成时被调用
- channelRead 当从 Channel 读取数据时被调用 **(用于唤醒下一个入站处理器)**
- ChannelWritabilityChanged当 Channel 的可写状态发生改变时被调用。可以通过调用 Channel 的 isWritable()方法来检测 Channel 的可写性。与可写性相关的阈值可以通过Channel.config().setWriteHighWaterMark()和Channel.config().setWriteLowWaterMark()方法来 设置
- userEventTriggered 当 ChannelnboundHandler.fireUserEventTriggered()方法被调用时被调用。