Netty-channelHandler 的生命周期

26 篇文章 1 订阅
  • ChannelHandler 回调方法的执行顺序

  1. handlerAdded() 当检测到新连接之后,调用 ch.pipeline().addLast(new XXXHandler()); 之后的回调
  2. channelRegistered() 当前的 channel 的所有的逻辑处理已经和某个 NIO 线程建立了绑定关系
  3. channelActive() channel 的 pipeline 中已经添加完所有的 handler,并且绑定好一个 NIO 线程之后,这条连接算是真正激活了,接下来就会回调到此方法。
  4. channelRead() 收到发来的数据,每次都会回调此方法,表示有数据可读。
  5. channelReadComplete() 数据读取完毕回调此方法
  6. channelInactive()  表示这条连接已经被关闭了,这条连接在 TCP 层面已经不再是 ESTABLISH 状态了
  7. channelUnregistered()  表示与这条连接对应的 NIO 线程移除掉对这条连接的处理
  8. handlerRemoved() 这条连接上添加的所有的业务逻辑处理器都被移除掉后调用

用法举例

  1. handlerAdded() 与 handlerRemoved()可以用在一些资源的申请和释放
  2. channelActive() 与 channelInActive()可以统计单机的连接数,channelActive() 被调用,连接数加一,channelInActive() 被调用,连接数减一。channelActive() 还可以实现ip黑白名单的过滤

  3. channelRead()用来拆包读取信息

  4. channelReadComplete()实现批量刷新的机制,这样channelRead()中只使用write() 方法而不用writeAndFlush()每次都刷新写入到缓存,从而提高性能。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值