channelInactive与关闭和channelhandler之间的区别?

时间:2018-05-08 03:53:11

标签: netty

channelhandler中的channelInactive与close和disconnect事件有什么区别?

如果我手动关闭频道,将调用channelhandler中的所有三种方法吗?

如果通道因网络错误而关闭,那么将调用channelhandler中的所有三种方法?

我想知道我是否只是实施了channelInactive方法,是否也涵盖了所有关闭和断开事件?我的意思是channelInactive方法优于其他方法吗?

1 个答案:

答案 0 :(得分:2)

不同之处在于disconnectclose是出站的,这也是ChannelOutboundHandlerchannelInactive定义的原因,而ChannelInboundHandler是入站的,因此在{{1}中定义}。

出站事件是通过Channel.*ChannelHandlerContext.*方法显式触发的事件,例如:“我想要关闭频道”。然后,用户可以拦截这些并执行某些操作,例如延迟关闭等。

入站事件由传输本身(以及EventLoop)触发,并且通常告诉您发生了某些事情(这可能是因为您请求它或远程对等体这样做了)。

disconnectclose之间的差异取决于传输本身,例如,当使用TCP时,使用UDP时没有差异,只有一个。