私はTomcat 7.0.4で新しいServlet 3.0非同期機能を使っています。私はクライアントがGET要求でハングアップしてメッセージの更新を得ることを可能にするこのChat Applicationを見つけました。これは、メッセージの受信に関してはうまくいきます。クライアントが接続を閉じたかどうかを知る方法
クライアントが切断された、つまりユーザーがブラウザを閉じると、問題が発生します。クライアントが切断されていても、サーバはIOException
を上げていないようです。メッセージスレッド(上のリンクのソースコードを参照)は、保存されたすべてのAsyncContext
の出力ストリームにうれしく書いています。
これはTomcatのバグですか?または私はここに何かを逃していますか?これがバグでない場合は、クライアントが接続を閉じたかどうかをどのように検出するのですか?
書き込み操作によって発生していないIOExceptionが発生した場合は、それが処理されます。したがって、ブラウザを閉じてその例外を得ることはできません。タイムアウトはこの例では10分です。あなたが何百ものクライアントを言うことができれば、それはかなり大変です。 – SS3
Glassfish v3でコードを試しましたが、FirefoxでonErrorイベントが発生するようですが、IEでは動作しません。これは本当に奇妙です。 – SS3
@ SS3:Firefoxに問題はないと言えますか? –