2010-08-27 3 views
24

Was ist Best Practice für die Abfrage von Servern mit JavaScript für Anwendungen, die Daten sehr schnell aktualisieren müssen? Ich benutze jQuery für das Frontend und Java Spring Framework für das Backend.Serverabfrage mit JavaScript

Beispiel für aktualisierte Daten könnte eine Liste von Elementen sein, die sehr schnell aktualisiert werden (alle 1 Sekunde).

+1

sehr schnell definieren. Einmal pro Minute? Einmal alle zehn Sekunden? Einmal jede Sekunde? Welche Art von Daten? –

+0

Alle 1 Sekunde und Daten würden Text und vielleicht einige HTML in sehr kleinen Mengen – newbie

Antwort

39

Sie können jQuery's Ajax functions verwenden, um den Server jede Sekunde oder so abzufragen. Dann kann der Server nahezu in Echtzeit mit Anweisungen an den Browser antworten.

Sie können auch long polling statt der oben genannten verwenden, um die Latenz zu reduzieren, ohne die Häufigkeit der Umfragen zu erhöhen.

Comet Daily: The Long-Polling Technique Zitiert:

Die lang Polling Comet-Technik ist eine Technik, die traditionelle Abfrage optimiert Latenz zu reduzieren.

Herkömmliche Abfrage sendet einen XMLHttpRequest an den Server in festen Intervallen. Öffnen Sie beispielsweise alle 15 Sekunden eine neue XMLHttpRequest, empfangen Sie eine sofortige Antwort und schließen Sie die Verbindung.

Long-Polling sendet eine Anfrage an den Server, aber eine Antwort wird nicht an den Client zurückgegeben, bis eine verfügbar ist. Sobald die Verbindung geschlossen wird, entweder aufgrund einer Antwort des Clients oder wenn eine Anforderung abläuft, wird eine neue Verbindung initiiert. Das Ergebnis ist eine signifikante Verringerung der Latenzzeit, da der Server normalerweise eine Verbindung hergestellt hat, wenn er bereit ist, Informationen zurückzugeben, die an den Client zurückgegeben werden.

Zusätzlich zu den oben, schlage ich vor, dass Sie die akzeptierte Antwort auf die folgende Stack-Überlauf-Stelle für eine detaillierte Beschreibung der langen Abfragetechnik überprüfen:

+0

+1 sehr interessant! " –

3

I second Daniel's suggestion lang-Poll oder Push verwenden. Check out

CometD ist eine skalierbare HTTP-basierte Ereignis-Routing-Bus, der eine Ajax Push-Technologie Muster wie Comet bekannt ist, verwendet. Der Begriff "Comet" wurde von Alex Russell in seinem Beitrag Comet: Low Latency Data for the Browser geprägt.

Sie haben eine Seite zu erklären, wie diese Arbeit mit Frühling zu bekommen: