ChannelHandler事件

ChannelHandler

ChannelInboundHandler

channelInBoundHandler 事件, 具体可以看 io.netty.channel.ChannelInboundHandler 接口的方法。

事件回调方法 触发时机
channelRegistered Channel 被注册到 EventLoop
channelUnReistered Channel 从 EventLoop 上取消注册
channelActive Channel 被激活,处于就绪状态,可以被读写
channelInActive Channel 处于非就绪状态,可以从远端读取到数据
channelRead Channel 可以从远端读取到数据
channelReadComplate Channel 从远端读取数据完成
userEventTriggered 用户事件被触发时
channelWritabilityChanged Channel 的写状态发生变化

ChannelOutboundHandler

事件回调方法 触发时机
bind 监听地址(IP + 端口)绑定(用于服务端)
connect 连接服务器(用于客户端)
disconnect 断开服务器连接
close 主动关闭 Channel
deregister
read 读数据
write 定局数据
flush 刷数据

ChannelInitializer

装配 handler

1
2
3
4
5
6
7
8
9
server.childHandler(new ChannelInitializer<NioSocketChannel>() {
@Override
protected void initChannel(NioSocketChannel nioSocketChannel) throws Exception {
nioSocketChannel.pipeline()
.addLast(new StringDecoder())
.addLast(new StringEncoder())
.addLast(handler);
}
});

initChannel 方法中装配各种 handler 以实现自己的业务逻辑。

事件回调

ChannelHandler 的调用顺序。

NettyHandler链