Java Socket API: WebSocket の閉鎖の検出
Java の Socket API では、接続が閉じられているかどうかを判断するのが困難な場合があります。 isConnected() メソッドは、リモートで切断されたソケットに対しても true を返しますが、isClosed() はリモートで閉じられても false のままです。
従来のアプローチ
多くの開発者は継続的にガベージを書き込むことに頼っています。メッセージを出力ストリームに送信し、例外をチェックしてクロージャを検出します。ただし、この方法は非効率的であり、ネットワークを汚染します。
代替ソリューション
残念ながら、接続状態を明示的に報告する API はありません。代わりに、次のアプローチを使用して、ソケットが閉じられているかどうかを推測できます:
読み取り/書き込み操作: ピアが正常に接続を閉じた場合:
接続ドロップ: 接続が切断された場合突然:
読み取りタイムアウト: ピアがまだ接続されている場合しかし非アクティブ:
以上がJava の Socket API を使用して WebSocket 接続の終了を確実に検出するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。