Was sind WebSockets?

WebSockets basieren auf TCP sie ermöglichen eine bidirektionale Kommunikation zwischen einem Client und Server. Im Gegensatz zu HTTP, welches ein Request-Response-Protokoll ist, hält ein WebSocket die Verbindung offen und ermöglicht es beiden Parteien Nachrichten zu senden. So ist für einen Server möglich denn Client über Ereignisse zu informieren, ohne das dieser wie bei HTTP eine Anfrage senden muss.

Zweck

Wie bereits in der Einleitung angedeutet wurden WebSockets dazu entwickelt bidirektionale Kommunikation im Web zu ermöglichen. WebSockets ermöglichen es Websites zu erstellen, welche dem Nutzer Echtzeitinformationen liefern können. Dies ist für viele Anwendungen von Vorteil, so wäre es ohne WebSockets sehr schwierig eine Website für einen Chat ein Onlinespiel oder Börseninformationen zu erstellen.

Funktionsweise

Eine WebSocket-Verbindung wird über einen Handshake aufgebaut. Dabei sendet der Client eine HTTP-Anfrage an den Server mit der Information, dass er die Verbindung auf WebSockets umstellen möchte. Der Server antwortet dann damit, dass das Protokoll umgestellt. Ab diesem Zeitpunkt können beide die TCP-Verbindung, welche zuvor für die HTTP-Kommunikation genutzt wurde, zur Kommunikation über verwenden.

Nachdem die Verbindung erfolgreich aufgebaut wurde, können Daten entweder als Text oder in Binärform übertragen werden. Das WebSocket-Protokoll kennt dazu drei Kontrollnachrichten, die zum Steuern der Verbindung genutzt werden. Diese sind Ping, Pong und Close, dabei wird Close zum schliessen der Verbindung genutzt, und Ping und Pong um das Fortbestehen der Verbindung zu überprüfen.

Der Handshake könnte wie folgt aussehen:

Client-Request:

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

Server-Response:

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

Ressourcen

The WebSocket Protocol
WebSocket - Wikipedia
The WebSocket API - Mozilla
WebSocket - Mozilla

Last updated 12 Feb. 2025, 08:42 +0100 . history