我们有几个Netty客户端的处理程序是可共享的,并且不包含任何可变状态。处理程序已添加到StaticChannelPipline
。我想知道是否有办法知道channelDisconnected
是由于服务器关闭连接还是不能通过调用客户端指定的回调来通知该情况。
答案 0 :(得分:2)
您可以覆盖SimpleChannelDownstreamHandler.closeRequested()
,以便在您的应用程序调用{{1}}时收到通知。
但是,即使您调用Channel.close()
,也始终存在竞争条件,其中远程对等方尝试同时关闭连接。因此,根据“哪一方”关闭连接,确定应用程序的行为并不是一个好主意。
或者,您可以在协议中定义Channel.close()
消息,并要求客户端在断开连接之前发送再见消息。然后你会更好地了解客户端是否按预期终止其连接。