4

ロングポーリングやフォーエバーフレームなどのコメットテクニックを使用しています。クロス サブドメインのものに iframe を使用しています。これらの手法を実装しているときに遭遇した 1 つの問題は、ユーザーがページを更新したり別のページに移動したりして新しい要求が発生したときに、comet 接続が古いページから開かれたままになることです。私のサーバー (トルネード) は接続を閉じることはありません。制限された Wireshark 機能から、送信された TCP fin パケットが表示されません。ただし、ブラウザを閉じると、その時点でソケットが閉じられます。

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

4

1 に答える 1

1

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

于 2011-01-18T03:55:38.633 に答える