Comet – Push-Technologie für Webanwendungen

17.11.2009

Was ist Comet?

Der Begriff Comet bezeichnet eine neuartige Webtechnologie, die es mittels Ajax-Elementen und geeigneten Softwarekomponenten ermöglicht, serverseitig initiierte Daten-Pushs an den Client/Browser durchzuführen. Dies widerspricht zwar prinzipiell dem klassischen Webparadigma von Request-Response-Ablauf zwischen Client und Server, ist aber dank moderner technischer Entwicklungen realisierbar.

ein KometGrundlegend werden für die Realisierung von Push-Technologie langlebige HTTP-Requests (Long-Polling oder Streaming) verwendet, um geringe Latenzzeiten und zeitnahe Updates zu ermöglichen. Im Vergleich zum sogenannten Polling, bei dem innerhalb kurzer Intervalle Requests an der Server geschickt werden um Änderungen zu erfragen („Gibt es etwas Neues? Gibt es etwas Neues?…“), kann die Bandbreiten- und Serverlast somit stark reduziert werden.

Wozu kann Comet eingesetzt werden?

Für den Einsatz von Push-Technologie im Internet/Intranet gibt es zahlreiche sinnvolle und interessante Möglichkeiten. Ein Gebiet, für das sich der Einsatz anbietet, sind kollaborative Multi-User-Anwendungen, bei denen mehrere Nutzer in Echtzeit zusammenarbeiten können. Dies kann sich von der Erstellung und Bearbeitung von Dokumenten, über das Verwalten von Zeit- und Ressourcenplänen, bis hin zum gemeinsamen interaktiven Lernen in einer Lernumgebung oder Hilfs- und Supportplattformen erstrecken.

Ein weiteres Gebiet sind Anwendungen mit sehr aktuellen und veränderlichen Daten, sogenannte Real-Time-Anwendungen. Dazu zählen beispielsweise Anzeigen zur Überwachung von Systemwerten (sog. Monitoring), Darstellung von Börsenkursen oder auch Newsticker.

Was muss für den Einsatz von Comet berücksichtigt werden?

Da für jede langlebige Cometverbindung ein offener HTTP-Request besteht und klassische Webserver nach dem Prinzip „Ein Thread pro Request/Verbindung“ arbeiten, wird ein Server benötigt, der mit einer evtl. auftretenden großen Anzahl an Requests zurecht kommt.
Asynchrone Requestverarbeitung ist hier das Stichwort. Moderne Server bzw. Container wie Tomcat 6, Jetty 6 oder GlassFish v2.1/3 bieten cometunterstützende Eigenschaften, die es u. a. ermöglichen den Request zu suspendieren, d. h. den Request vom Thread zu trennen, beiseitezulegen und erst bei einem anstehenden Update wieder aufzunehmen. Der freiwerdende Thread steht somit wieder für weitere Anfragen bzw. Aufgaben zur Verfügung.
Serverseitige Frameworks, wie DWR oder Atmosphere, können dabei helfen, die Backend-Entwicklung zu vereinfachen.

Die clientseitig benötigten JavaScript-Methoden für eine Cometimplementierungen können relativ einfach „von Hand“ entwickelt werden.  Um jedoch eine cross-browserfähige Lösung entwickeln zu können, sollten im Vorfeld mögliche Probleme durch verschiedene Browserimplementierungen und -eigenheiten recherchiert werden.
Auch hier kann sich der Einsatz von Frameworks anbieten, wie z.B. dem Dojo Toolkit mit Comet-Plugins für die Unterstützung des Bayeuxprotokolls (JSON-basiertes Übertragungsprotokoll).

Zurück zur Übersicht

Kommentar verfassen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

*Pflichtfelder

*