WebSocket ist ein auf TCP basierendes Netzwerkprotokoll, das es Webanwendungen ermöglicht, eine bidirektionale Verbindung zwischen Client und Webserver herzustellen. Im Gegensatz zu HTTP, das eine unidirektionale Kommunikation unterstützt, erlaubt WebSocket eine kontinuierliche, interaktive Kommunikation in Echtzeit. Diese Verbindung bleibt offen, sodass sowohl der Client als auch der Server, Nachrichten in beliebiger Reihenfolge senden können, ohne die Overhead-Kosten von HTTP-Headerdaten. Dies führt zu einer geringeren Latenzzeit und einer effizienteren Kommunikation zwischen Client und Server.
WebSocket wird in der Regel für die Echtzeitkommunikation von Webanwendungen verwendet, beispielsweise Chat-Anwendungen, Live Updates, Online-Spiele, Echtzeit-Kollaboration-Tools und andere Anwendungen, die eine kontinuierliche bidirektionale Kommunikation erfordern.
Der Verbindungsprozess zwischen Webanwendung und Webserver
Der WebSocket-Protokoll-Handshake
Anfrage des Clients
Der Verbindungsprozess beginnt mit einer Client-Anfrage, die den sogenannten Handshake-Prozess initiiert. Der Client sendet eine HTTP-Anfrage an den Server mit einem ausgefüllten Upgrade-Header-Feld mit dem Wert „WebSocket“.
Antwort des Servers
Der Server empfängt die Anfrage des Clients und antwortet mit einem HTTP-101 Statuscode (Switching Protocols), der den erfolgreichen Wechsel des Protokolls von HTTP zu WebSocket signalisiert. In der Antwort befindet sich auch ein spezieller Schlüssel, der für die Verschlüsselung der Verbindung verwendet wird.
Nachdem der Handshake abgeschlossen ist, ist die WebSocket Verbindung erfolgreich hergestellt. Sowohl der Client als auch der Server können nun Nachrichten in beide Richtungen senden und empfangen.
Aufheben der Verbindung
Eine WebSocket-Verbindung kann auf verschiedene Arten getrennt werden. Die Trennung erfolgt über eine „Close-Nachricht“, die bei aktiver Schließung durch Client oder Server, Timeout oder Netzwerkfehler an eine der beiden Seiten geschickt wird. Die andere Seite antwortet im Normalfall mit einer Bestätigungsnachricht und die Verbindung wird aufgehoben.