Erste Implementierungen von WebSockets

Die aktuelle Entwicklerversion von Googles Chrome enthält die vom W3C vorgeschlagene WebSockets-API für eine echte bidirektionale Kommunikation zwischen Browser und Server.

In Pocket speichern vorlesen Druckansicht 93 Kommentare lesen
Lesezeit: 2 Min.
Von
  • Christian Kirsch

Ajax hat zwar viele Verbesserungen in Web-Anwendungen ermöglicht, aber es ist noch nicht der Weisheit letzter Schluss. Denn alle Kommunikation geht auch bei dieser Technik weiterhin vom Browser aus. Eine echte bidirektionale Verbindung sollen die vom W3C vorgeschlagenen WebSockets bieten. Interessenten können jetzt mit einer ersten Implementierung experimentieren.

Googles Entwickler haben die Technik in die aktuelle Entwicklerversion ihres Chrome-Browser integriert. Bei Mozilla wird seit Anfang des Jahres ebenfalls daran gearbeitet. Eine JavaScript-Variante der WebSockets-API benötigt Flash im Browser, da sie dessen Socket mitbenutzt. Außerdem gibt es eine JavaScript-Implementierung, die Ähnliches leistet und vom jeweiligen Browser unabhängig sein soll.

Neben der browser-seitigen API benötigt man zum Experimentieren mit WebSockets einen passenden Server. Google stellt dazu eine Python-Anwendung bereit, die sich sowohl als selbstständiger Webserver als auch als Apache-Modul verwenden lässt.

Anwendungen, die die WebSockets-API verwenden, öffnen eine dauerhafte Verbindung zwischen Browser und Server. Ähnlich wie bei Ajax löst das Eintreffen einer Nachricht beim Browser ein Ereignis aus, das ein Event-Handler verarbeitet. Ein Unterschied zur bisherigen Technik besteht darin, dass der Server jederzeit Daten durch eine solche Verbindung senden kann, ohne von der Anwendung per GET- oder POST-Request dazu aufgefordert worden zu sein. Außerdem bleibt der Kanal nach dem open so lange bestehen, bis er explizit per close geschlossen wird.

WebSockets spricht nicht mehr HTTP, sondern ein neues Protokoll. Es soll weniger geschwätzig sein, da es nach dem Festlegen der Verbindungsparameter auf den Austausch sich wiederholender Header verzichtet. (ck)