Das WebSocket-Protokoll ist ein Netz­werk­pro­to­koll basierend auf TCP. Dieses definiert, auf welche Weise Daten zwischen Netz­wer­ken aus­ge­tauscht werden. Weil es zu­ver­läs­sig und sehr effizient arbeitet, wird es von nahezu allen Clients verwendet. TCP stellt eine Ver­bin­dung zwischen zwei Kom­mu­ni­ka­ti­ons­end­punk­ten her, die als Sockets be­zeich­net werden. So kann eine Ver­bin­dung von Daten in zwei Rich­tun­gen erfolgen.

Bei einer bi­di­rek­tio­na­len Ver­bin­dung wie bei WebSocket (manchmal auch: Web Socket) werden Daten gleich­zei­tig in beide Rich­tun­gen aus­ge­tauscht. Der Vorteil: Es findet ein schneller Aufruf der Daten statt. WebSocket im Spe­zi­el­len er­mög­licht so eine direkte Kom­mu­ni­ka­ti­on zwischen einer Web­an­wen­dung und einem WebSocket-Server. Das bedeutet konkret: Sie rufen eine Webseite auf und bekommen diese in „Echtzeit“ angezeigt.

Wie funk­tio­niert ein WebSocket?

Wie wird eine Webseite ohne WebSocket auf­ge­ru­fen? Im Internet findet die Über­tra­gung von Webseiten in der Regel mittels einer HTTP-Ver­bin­dung statt. Das Protokoll dient der Über­tra­gung von Daten und er­mög­licht es, dass Webseiten in Ihrem Web­brow­ser geladen werden. Dazu stellt Ihr Client bei jeder Aktion (z. B. einem Klick) eine Anfrage an den Server.

Soll eine Website auf­ge­ru­fen werden, muss der Client bei HTTP erst eine Anfrage an den Server senden. Erst dann kann dieser Antworten und die ge­wünsch­ten Inhalte liefern. Es handelt sich dabei um ein schlich­tes An­for­de­rungs- und Ant­wort­mus­ter, was letztlich dazu führt, dass sich die Zeit zwischen Anfrage und Antwort deutlich verzögert.

Mit WebSocket wurde eine Mög­lich­keit des dy­na­mi­schen Abrufens einer Webseite in Echtzeit ge­schaf­fen. Mit dem WebSocket-Protokoll reicht es bereits, wenn der Client die Ver­bin­dung zu einem Webserver öffnet. Der Ver­bin­dungs­auf­bau zwischen Client und Server erfolgt mit dem WebSocket-Protokoll-Handshake. Hier sendet ein Client alle für den In­for­ma­ti­ons­aus­tausch be­nö­tig­ten Iden­ti­fi­ka­tio­nen an den Server.

Der Kom­mu­ni­ka­ti­ons­ka­nal bleibt nach dem Handshake quasi geöffnet. Der Server kann selbst­stän­dig aktiv werden und dem Client alle In­for­ma­tio­nen zur Verfügung stellen, ohne dass diese vom Client angefragt wurden. Auch Push-Nach­rich­ten­mel­dun­gen auf Websites funk­tio­nie­ren nach diesem Prinzip. Gibt es ser­ver­sei­tig neue In­for­ma­tio­nen, kom­mu­ni­ziert der Server dem Client dies, ohne dass extra eine cli­ent­sei­ti­ge Anfrage gestellt werden müsste.

Der Client stellt zu Beginn mit WebSocket klassisch eine Anfrage, wie es auch bei HTTP der Fall ist, doch der Ver­bin­dungs­auf­bau erfolgt über eine be­stehen­blei­ben­de TCP-Ver­bin­dung. Der Handshake zwischen Client und Server sieht fol­gen­der­ma­ßen aus:

Der Client stellt die Anfrage:

GET /chatService HTTP/1.1
Host: server.example.com
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ==
Sec-WebSocket-Origin: http://example.com
Sec-WebSocket-Protocol: chat, superchat
Sec-WebSocket-Version: 13

Die Antwort des Servers lautet:

HTTP/1.1 101 Switching Protocols
Upgrade: WebSocket
Connection: Upgrade
Sec-WebSocket-Accept: s3pPLMBiTxaQ9kYGzzhZRbK+xOo=
Sec-WebSocket-Protocol: superchat

Das neue URL-Schema von WebSocket für aus­ge­führ­te Webseiten wird statt mit http mit ws be­schrie­ben. Für eine sichere Ver­bin­dung wählen Sie wss, wie es bei einer sicheren Ver­bin­dung mit https der Fall wäre.

Für was braucht man WebSocket?

WebSocket kommt immer dann zum Einsatz, wenn Sie einen schnellen Aufbau von Ver­bin­dun­gen benötigen. Denken Sie hier an einen Live-Chat für Sup­port­hil­fe, Nach­rich­ten­ti­cker, Bör­sen­ti­cker, Messenger und an Echt­zeit­spie­le. Mit den gängigen Ver­bin­dungs­ab­fra­gen stießen viele Un­ter­neh­men an ihre Grenze.

Auch soziale Medien können von WebSocket pro­fi­tie­ren. Wir möchten live mit anderen Personen in Ver­bin­dung treten und Nach­rich­ten un­mit­tel­bar versenden und empfangen. WebSocket ist immer dann sinnvoll, wenn schnelle Über­tra­gungs­ge­schwin­dig­kei­ten erreicht werden müssen und die Latenz niedrig sein muss.

Was sind die Vorteile von WebSocket?

Bei der klas­si­schen Nutzung über eine HTTP-Ver­bin­dung besteht das Problem, dass der Client immer die komplette HTML-Seite lädt. Als Lösung ent­wi­ckel­te man die AJAX-Tech­no­lo­gie. Diese hatte jedoch den Nachteil, als uni­di­rek­tio­na­le Ver­bin­dung die Kom­mu­ni­ka­ti­on in nur eine Richtung zu er­mög­li­chen, was bei der heutigen Aus­las­tung und besonders bei Chat-An­wen­dun­gen zu er­heb­li­chen Ver­zö­ge­run­gen führt. Als bi­di­rek­tio­na­le Ver­bin­dung mit Austausch in beide Rich­tun­gen erlaubt WebSocket den direkten Kontakt mit dem Browser, was zu schnellen La­de­zei­ten führt. Sobald eine Nachricht z. B. in einem Support-Chat be­reit­steht, wird diese Ihnen ohne Umwege angezeigt.

WebSocket-Beispiele im sinn­vol­len Einsatz

Geeignet ist WebSocket für jeden, der eine schnelle Ver­bin­dung im Internet benötigt. Eine Echt­zeit­ver­bin­dung zwischen Client und Server ist heute für viele Bereiche notwendig, um bestimmte Dienst­leis­tun­gen ein­wand­frei anbietet zu können. Darunter fallen bei­spiels­wei­se:

  • On­line­spie­le
  • Verkaufs- und Ein­kaufs­platt­for­men wie eBay
  • Support-Chats
  • Live-Sport-Ticker
  • Echtzeit-Ak­tua­li­sie­run­gen von sozialen Medien

WebSocket ist kein direkter Ersatz für HTTP, kann aber als ef­fi­zi­en­ter, bi­di­rek­tio­na­ler Kom­mu­ni­ka­ti­ons­ka­nal überall dort genutzt werden, wo eine Echtzeit-Anzeige nötig ist.

Wo ist WebSocket bereits im­ple­men­tiert?

Um WebSocket nutzen zu können, benötigen Sie einen aktuellen Web­brow­ser:

  • Internet Explorer ab Version 10
  • Firefox ab Version 6
  • Chrome ab Version 14
  • Opera ab Version 12.10
  • Safari ab Version 6

Auf der Ser­ver­sei­te lässt sich WebSocket mit folgenden Pro­gram­mier­spra­chen und Frame­works umsetzen:

  • Node.js
    • Socket.IO
    • WebSocket-Node
    • ws
  • Java
    • Jetty
  • Ruby
    • Event­Ma­chi­ne
  • Python
    • py­Web­So­cket
    • Tornado
  • Erlang
    • Shirasu
  • C++
    • lib­Web­So­ckets
  • .NET
    • Su­per­Web­So­cket
Fazit

WebSocket ist eine Tech­no­lo­gie, die sich im Umfeld der Ent­wick­lung von HTML5 bewegt – dem Versuch, das Web schneller, dy­na­mi­scher und sicherer zu machen. Durch das ef­fi­zi­en­te Protokoll sind moderne Web­an­wen­dun­gen möglich, die sehr viel schneller agieren, als man es von der tra­di­tio­nel­len HTTP-Kom­mu­ni­ka­ti­on her kennt. Dabei soll das ältere Protokoll kei­nes­falls ab­ge­schafft werden. Trotz WebSocket bleibt HTTP weiterhin ein wichtiger Standard im Internet.

Zum Hauptmenü