如何知道channelDisconnected是否来自Netty客户端中的客户端或服务器

如何知道channelDisconnected是否来自Netty客户端中的客户端或服务器,netty,Netty,我们有两个Netty客户端,其处理程序是可共享的,不包含任何可变状态。处理程序被添加到StaticChannelPipline中。我想知道是否有办法知道通道断开连接是由于服务器关闭连接还是无法通过调用客户端指定的回调来通知这种情况。您可以覆盖SimpleChannelDownstreamHandler.closeRequested()在应用程序调用Channel.close()时获得通知 但是,即使调用了Channel.close(),也始终存在一种竞争条件,即远程对等方试图同时关闭连接。因此,

我们有两个Netty客户端,其处理程序是可共享的,不包含任何可变状态。处理程序被添加到
StaticChannelPipline
中。我想知道是否有办法知道
通道断开连接是由于服务器关闭连接还是无法通过调用客户端指定的回调来通知这种情况。

您可以覆盖
SimpleChannelDownstreamHandler.closeRequested()
在应用程序调用Channel.close()时获得通知

但是,即使调用了
Channel.close()
,也始终存在一种竞争条件,即远程对等方试图同时关闭连接。因此,根据“哪一方”关闭了连接来确定应用程序的行为不是一个好主意


或者,您可以在协议中定义一条
再见消息,并要求客户端在断开连接之前发送该再见消息。这样您就可以更好地了解客户端是否按预期终止了连接。

谢谢。我想知道,当服务器关闭连接时,能够调用客户端侦听器回调。我将使用一个isConnected()方法,客户机的用户可以使用它。