質問

XHRオブジェクトを破壊することなく、XHRオブジェクトのresponseTextをクリアする方法はありますか?

私はブラウザにライブデータを供給するために、Webサーバへのオープン持続的な接続を維持する必要があります。問題は、(常に毎秒数百K)を介して来て、比較的大量のデータが存在しているので、この接続は、少なくとも数分間開いたままにしなければならないので、メモリ使用量は、大きな問題です。 responseTextは私が返送JSONはそれを得ることができるように小さいと、クランチされているにもかかわらず、非常に迅速に非常に大きな取得します。

私はAJAXスタイルの短いポーリングを使用して、私はそれで終わりだときだけXHRオブジェクトを破壊した場合、サーバー側のアプリが動作する方法に、私も数ミリ秒で、重要なデータを大量に欠場により、

は、それがかかります応答を解析するために、新しいXHRを作成し、それを送信します。 Webサーバは一度に一つの接続を受け入れるように私は、重複要求を使用するオプションはありません。 (聞かないでください。)ので、彗星は、まさに私が必要とするモデルである。

私は何をしたいのは、それがサーバから戻ってくると、各JSONのチャンクを解析し、その後、私は同じ接続を使用し続けることができるようにresponseTextをクリアです。しかし、responseTextは読み取り専用です。それは直接、私が発見したいずれかの方法で空にすることはできません。

私がここで行方不明です絵の部分はありますか?誰もが、私は私はそれを読んで終わりだときresponseTextを解放するために使用することができます任意のトリックを知っていますか?またはサーバーの応答が行くことができます別の場所はありますか?

これは本当に、ほとんどのコードに依存しない問題であるため、

私は、コードを含めておりません。 XHRsを起動し、返されたデータを扱うJavascriptのルーチンは非常に、非常に単純です。

役に立ちましたか?

解決

ロングポーリングが機能するだけで、方法です。あなたは最後に読み込まれた行数にして以降、その時点から読み取るあなたの間隔の各目盛りにインデックスを保持します。したがって、一つの長い応答、一つの長い接続です。

新鮮responseTextは、新鮮な接続を意味します。しかし、それはもう彗星ではありません。)

他のヒント

他の応答に反して、「ロングポーリングは、」一回の長い接続ではありません。 「ロング・ポーリング」は、配列中に多くの接続、応答が必要とされていない場合は、時間の合理的に長い期間のために接続を維持するように設定し、それぞれです。彼らは、<全角> のタイムアウト(典型的には約25-30s)、その後、再確立新しい接続を行います。 HTTP1.1は既存の接続の再使用を可能にするため、接続を再ネゴシエートする必要がないので、事実上瞬時に再確立することができる。

それでは、複数の要求を使用しています。実際にそこに接続を再確立に無視できるオーバーヘッドであり、各新しい接続が前の応答テキストを破壊することができます、これはパフォーマンス/オーバーヘッドの観点から完全に実行可能なソリューションであり、同様にあなたのメモリの問題を解決するだろうので。

[編集]私は WebSyncするの著者の一人として、経験から話しますよ。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top