0

共有可能で変更可能な状態を含まないハンドラーを備えたNettyクライアントがいくつかあります。ハンドラーがに追加されStaticChannelPiplineます。channelDisconnectedサーバーが接続を閉じたことが原因であるかどうか、またはクライアントが指定したコールバックを呼び出してそのケースを通知できないかどうかを知る方法があるかどうかを知りたいです。

4

1 に答える 1

2

SimpleChannelDownstreamHandler.closeRequested()アプリケーションがを呼び出したときに通知を受け取るようにオーバーライドできますChannel.close()

ただし、を呼び出した場合でもChannel.close()、リモートピアが同時に接続を閉じようとする競合状態が常にあります。したがって、「どちら側」が接続を閉じたかに応じて、アプリケーションの動作を判断することはお勧めできません。

または、プロトコルでメッセージを定義し、good-bye切断する前にクライアントにさようならメッセージを送信するように要求することもできます。そうすれば、クライアントが意図したとおりに接続を終了したかどうかがわかります。

于 2011-12-01T08:02:05.990 に答える