私のアプリケーションでは、クライアントはブラウザのJavascript関数セットであり、クリップの再生など、いくつかの機能を実行します。XmlHttpRequestを使用してサーバーと通信します。ただし、クライアントに割り込む方法は他にないため、サーバーは接続を突然閉じることができます。クライアントは、クリップの再生中に接続が閉じられたことを検出できるので、メッセージを印刷してページを消去できますか?助けていただければ幸いです。ありがとう、アニル
3 に答える
クリップがクライアントにストリーミングされている場合は、その提供を停止できます。
ただし、クリップがダウンロードされ、ブラウザで再生されているようです。この場合、CookieOfFortune で説明されているように、ウォッチドッグ アプローチを使用するのがおそらく最善です。サーバーを定期的に (1 秒に 1 回程度) ポーリングし、確認の小さなメッセージで応答するようにします。接続が閉じられたら、サーバーに否定メッセージで応答させます。
残念ながら、コメットのようなシステムを使用しないと、セッションの終了を示すメッセージをサーバーに「送信」させるのは非常に困難です。
ただし、クライアントがクリップをダウンロードするとすぐに、必要に応じて完全に再生できることに注意してください。残念ながら、ストリーミング アプローチに切り替える以外にこれを止める方法はありません。コンテンツの保護が優先事項である場合は、この変更を行うことをお勧めします。
おそらくXmlHttpRequestオブジェクトをポーリングできるので、接続が閉じられているかどうかを確認するために、時々ハートビートを送信してみてください。そうしないと、サーバーは、接続を閉じることをクライアントに通知するために、何らかのシグナルを送信する必要があります。
接続が閉じられたことをサーバーがクライアントに通知できないようです。ただし、提案されたポーリング方法は、通知ほど効率的ではありません。
NEXT Get リクエストで、セッションが無効であることがクライアントに通知されるように指定することで解決しました。
これは、URL 書き換えによって実装されました - Javascript 関数によって送信される各リクエストに「jsessionid=[id]」を追加します。サーブレットは現在のセッション ID を格納します。