Frage

Gibt es eine Möglichkeit, die response eines XHR-Objekt zu löschen, ohne das XHR-Objekt zu zerstören?

Ich brauche eine dauerhafte Verbindung offen auf einen Webserver zu halten Live-Daten an einen Browser zu füttern. Das Problem ist, gibt es eine relativ große Menge an Daten, die durch (mehrere hundert K pro Sekunde ständig) kommen, so die Speichernutzung ist ein großes Problem, weil diese Verbindung für mindestens einige Minuten geöffnet bleiben muss. response wird sehr groß sehr schnell, obwohl die JSON ich zurückgeschickt hat als kleines knirschte worden, wie es bekommen kann.

Durch die Art und Weise der serverseitige App funktioniert, wenn ich AJAX-Stil kurzen Polling verwenden und nur das XHR-Objekt zerstören, wenn ich mit ihm fertig bin, ich erhebliche Mengen an wichtigen Daten verfehlen auch in den wenigen Millisekunden dauert es analysieren sie die Antwort, erstellen sie eine neue XHR und auszusenden. Ich habe nicht die Möglichkeit, sich überlappenden Anfragen zu verwenden, da der Web-Server eine Verbindung zu einem Zeitpunkt nur akzeptiert. (Fragen Sie nicht.) Also Comet ist genau das Modell, das ich brauche.

Was würde Ich mag zu tun ist jedes JSON chunk zu analysieren, wie es vom Server kommt, und dann response räumen, so dass ich immer die gleiche Verbindung. Allerdings ist response nur gelesen werden. Es kann nicht direkt durch ein beliebiges Verfahren entleert werden habe ich gefunden.

Sie haben einen Teil des Bildes ich hier fehlt? Kennt jemand irgendwelche Tricks, die ich verwenden kann, response zu befreien, wenn ich es fertig bin zu lesen? Oder gibt es einen anderen Ort die Serverantworten gehen kann?

Ich bin auch nicht Code, weil das wirklich fast eine Code-Agnostiker Frage. Die Javascript-Routinen, die die XHRs und behandeln die zurückgegebenen Daten sind sehr, sehr einfach laichen.

War es hilfreich?

Lösung

Das ist nur, wie lange abruf funktioniert. Sie halten einen Index in die letzte Zeilennummer gelesen und mit jedem Tick des Intervalls ab diesem Zeitpunkt lesen. Es ist eine lange Verbindung, so dass eine lange Antwort.

Ein frischer responseText würde eine neue Verbindung bedeuten. Aber dann wäre es nicht Komet mehr sein;)

Andere Tipps

Im Gegensatz zu der anderen Antwort, „long-Polling“ ist nicht ein lange Verbindung. „Lang Polling“ ist viele Verbindungen in der Reihenfolge, stellen jeweils bis verbunden für einen längeren Zeitraum der Zeit zu bleiben, wenn keine Antwort erforderlich ist. Sie tun Auszeit (typischerweise um 25-30s) und dann wieder aufzubauen, eine neue Verbindung. Da HTTP1.1 für die Wiederverwendung von bestehenden Verbindungen zulässt, wird die Verbindung nicht zu neu verhandelt hat, und kann daher praktisch sofort wieder hergestellt werden.

So verwenden nur mehrere Anfragen. Da es wirklich vernachlässigbar Kopf die Verbindung wieder herzustellen, und jede neue Verbindung ermöglicht es Sie, den vorherigen Antworttext zu zerstören, das von einer Leistung / Overhead-Perspektive perfekt gangbare Lösung ist, und würde auch Ihre Speicherprobleme lösen.

[Bearbeiten] Ich spreche aus Erfahrung, wie einer der Autoren von WebSync .

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top