Artikelformat

HTML5 und die Websockets

HTML5 hat viele neue Features, auf die man als Entwickler schon immer gewartet hat und die man zum Teil durch Workarounds simuliert hatte. Sehr beliebt ist das Canvas Element, das wohl Animationen und Interaktionen mit den Browserboardmitteln erlauben wird. Daneben sind für kollaborative Webapplikationen die Websockets spannend, da diese einem Server die Möglichkeit geben Daten zum Client zu senden – ohne dass der Client diese explizit erfragt hat.

Websockets erlauben es einem Browser eine TCP Verbindung aus der JS-Engine des Browers heraus aufzubauen. PHP bietet alle Möglichkeiten einen Server zu erstellen und erlaubt es somit auch einen Websocket-Server bereitzustellen. Hierfür ist es wichtig, dass der korrekte Header gesendet wird. Da man als Entwickler diese Arbeit nicht bei jedem Projekt wiederholen möchte, nutzt man wie üblich eine Blibliothek. Nach etwas Try and Error fand ich die Bibliothek von Nico Kaiser. Diese ist aus mehreren Gründen interessant.

Die Bibliothek besteht aus einer Client Bibliothek und einer Serverkomponente. Der Vorteil dieser Clientkomponente ist die Tatsache, dass man Websockets damit sogar nutzen kann, wenn der Browser diese eigentlich nicht unterstützt. Hier wird ein Fallbackmechanismus genutzt, der auf Flash basiert.

Der Server ist nur mit PHP 5.3 lauffähig und kommt mit einer Beispiel „echo“ Applikation. Anhand dieser lässt sich auch ein guter Einstiegspunkt in eine Chat-Applikation finden, wenn man sich mit dieser Technologie auseinander setzen möchte.

Um die Echo Applikation zu testen, muss man die Serverkomponente nur auf der Kommandozeile starten und den Client in einem Browser aufrufen. Spannend ist hier auch die Möglichkeit mit mehreren Browsern parallel die Webapplikation aufzurufen und zu sehen, wie ein Text in den anderen Browsern erscheint. Eigentlich das, was ein Chat-System auch macht.

Daneben kann man sich auch weitere Applikationen vorstellen, bei denen Daten auf serverseite generiert und an den Client weitergegeben werden. Mit Websockets sind diese Datentransfers sehr dicht an Echtzeit zu realisieren.

5 Kommentare

  1. Hey, vielen Dank für’s Erwähnen! Und natürlich viel Spaß mit der Bibliothek – ich finde WebSockets eine extrem spannende Sache, da kommt bestimmt noch einiges an Anwendungsbereichen…

    Antworten
  2. Ich finde die Thematik auch sehr interessant, und hoffe, das WebSockets in kürze auch in Firefox und Opera funktionieren 🙂
    Für den IE9 wäre eine Unterstützung natürlich auch nett, ist aber eher unwarscheinlich 🙁

    Falls es jemanden interessiert: ich habe auch einen WebSocket-Server in PHP gebastelt 🙂 Neben WebSockets unterstützt der auch Ajax Long Polling. Ein Flash-Fallback gibts noch nicht, wäre aber schnell implementiert.

    Der größte Unterschied zu Nicos Script ist wohl die Fehlende Client-Komponente, dafür kann man „listener“ für bestimmte URLs definieren und „timer“ erstellen, die dem Problem entgegenwirken, dass das Serverskript pausiert, bis ein client-Request reinkommt.

    Eine Beispiel-Chat-Anwendung liegt bei 🙂

    Das ganze ist allerdings noch Alpha und auch nicht sonderlich gut dokumentiert, aber bestimmt einen Blick wert 🙂

    MfG
    Thomas

    Antworten
  3. @Nico: Deine Bibliothek hat bei mir auf Anhieb funktioniert und hat mich daher am meisten begeistert.

    Ansonsten vielen Dank für die interessanten Links.

    Antworten

Schreibe einen Kommentar

Pflichtfelder sind mit * markiert.