Tim Tepaße: Server-Push Funktion mit XMLHttpRequest simulieren

Beitrag lesen

Hallo,

Hallo ! Ich suche eine Möglichkeit, einem Client mitzuteilen, dass ein neuer Datensatz auf dem Server liegt, der doch bitte abgerufen werden soll.
Mich interessieren Eure Ideen.

Server-Push ist in HTTP nicht vorgesehen.

Die Idee, die mir sofort einfiele, wäre in regelmäßigen Abständen mittels Javascript den Server abzufragen, ob man neu laden darf. Das setzt natürlich voraus, dass Deine Zielgruppe überschaubar ist, d.h. Du davon ausgehen kannst, dass Javascript im Browser verfügbar ist und dass der Server Ahnung vom Zustand der Webseite im Browser hat, d.h. weiss dass die Seite jetzt neu laden darf.

Konkret rede ich von dem (ursprünglich proprietären) Javascript-Objekt XMLHttpRequest, das inzwischen in den meisten Browsern verfügbar ist. Damit kann man aus Javascript hinaus HTTP Requests absetzen und hat dann Zugriff auf das (bei erfolgreichem Request) zurück gelieferten XML-Dokument oder dessen Textinhalt. Die Technik wird seit ein paar Monaten unter dem Namen AJAX gehypt, weil das einfacher zu tippen ist. Du solltest also dann in regelmäßigen Abständen mittels Javascript den Server fragen, ob ein neuer Datensatz da ist, am besten mittels eines eigenen PHP-Skriptes, das nicht die ganze, für die Seite benötigte SQL-Abfrage macht sondern nur den Zustand (wie auch immer der zustande kommt) abfragt. Wenn der Server dann eine positive Antwort liefert, lädt das Javascript entweder die Seite neu oder lädt wieder mittels XMLHttpRequest nur den bestimmten Datensatz und montiert diesen in die Seite ein. Also ungefähr dieselbe Art von Interaktivität, die eine „echte“ Anwendung auch liefert und die sich z.B. bei GMail oder Google Suggest beobachten lässt.

Das ganze ist natürlich nicht so sparsam wie es mittels eines echten Pushes wäre, schließlich wird doch in regelmäßigen Abständen ein Request abgesetzt, allerdings werden doch sehr viel weniger Informationen übertragen, als bei dem kompletten Neuladen einer Seite.

Eine kurze Einführung und Übersicht über die Benutzung von XMLHttpRequest gibt es z.B. hier:
http://developer.apple.com/internet/webcontent/xmlhttpreq.html

Tim