0

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

4

1 回答 1

2

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

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

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

于 2011-12-01T08:02:05.990 回答