2011-01-18 9 views
4

私はロングポーリングと永遠のフレームを含むいくつかの彗星技術を使用しています。私はクロスサブドメインのもののためのiframeを使用しています。これらの手法を実装する際に遭遇した1つの問題は、ユーザーがページをリフレッシュするか、別のページに移動して新しいリクエストが発生した場合です。彗星の接続は古いページから開いたままになります。私のサーバー(竜巻)は決して接続を受け取っておらず、私の限定されたwiresharkの能力からは私はTCPフィンパケットが送られてきていません。しかし、ブラウザを閉じると、その時点でソケットが閉じられます。放棄された開いている接続の彗星の問題

これらの放棄されたオープンな接続は、正当な理由がないためにサーバー側でメモリを使用しているだけです。また、サーバーがオープンソケットに何らかのメッセージを送信し、IEが「解放されたスクリプトからコードを実行できません」というエラーメッセージを正しく表示すると、問題が発生します。だから、IEは離れて移動された古いウィンドウでコードを実行しようとしています。他の人々はどのようにこの問題に対処していますか?何とか接続を閉じるためにonbeforeunloadを使用する必要がありますか?

答えて

1

いつでも開いている接続を再起動してクライアント側から再起動できます。要求が指定された時間枠内にサーバーに到着しなかった場合は、安全に古い接続を閉じることができます。

+0

これは実際に問題を解決するものではありません。ユーザーがページをリフレッシュし、タイムアウトが発生する前にサーバーがこの放棄された接続にメッセージを送信するとどうなりますか? – moniker

+0

ページのリフレッシュによって新しい接続が開始されます。一度に1つのユーザ/ウィンドウごとにアクティブな接続が1つしかないので、最新の接続を使用できます。または、開いているすべての接続にメッセージを送信します。 –

関連する問題