[HTTP] Ajaxverbindung offen halten (keep-alive)

CPU

Lieutenant
Registriert
Jan. 2006
Beiträge
704
Hallöle,

folgendes: ich habe eine HTML-Seite mit Ajax und ein Serverskript. In Java kann man ein TCP/IP-Socket aufbauen und dann zwischen Client kommunizieren. Dies Kommunikation geht auch Eventbasiert (d.h. wenn der Server was schickt, wird der Client "Informiert"). Nun muss ich das mit Ajax umsetzen.
Da HTTP ein zustandsloses Protokoll ist und nach der Übertragung der Website die Verbindung getrennt wird ist ja nur eine "lineare" Kommunikation möglich - d.h. wenn ich etwas wissen will, dann frage ich nach. Wenn der Server mir was sagen will, geht das nicht ...

Und kann man nun mit Ajax es so tricksen, dass man eine dauerhafte Verbindung zum Server(-skript) herstellt und der Server einem über diese Weise Nachrichten zukommen lassen kann? Mit einer zweiten "linearen" Ajaxverbindung kann ich ja dann Daten zum Server senden.

Geht das mit keep-alive oder gibt es da so ein Timeout? Denn solange der Nutzer die Applikation nutzt muss die Verbindung stehen.

Gruß,
CPU

P.S.: Alternativ könnte man natürlich auch alle x Millisekunden abfragen, ob sich etwas neues ergeben hat, aber das ist mir zu unsauber (Zeitverlust, Traffic ...).
 
Die Stichworte, die für dein Problem passen, sind "Long Polling" und "Comet". Hier gibt's dazu auch Beispielcode.
 
Noch ein abschließender Nachtrag:

falls Deine Anwendung schon HTML5 kompatibel ist, kannst du auch den Server, per push, ein Event an den Browser senden lassen.

Server-sent event

- der Client muss keine ständige Verbindung halten (Traffic, Akkuleistung Mobiler Geräte)
- das Script wird nicht im sekundentakt belastet (Serverperformance)
- die Datenbank muss nicht ständig connectet werden.
 
Wobei Websockets noch nicht von allen wichtigen Browsern unterstützt werden, wenn ich mich nicht sehr irre.
 
HTML5 wird allgemein noch lange nicht von allen Browsern unterstützt. Das solltest du nur machen, wenn du genau weisst welche Leute mit welchen Browsern auf die Seite zugreifen.
 
Zurück
Oben