Definition Was ist WebSocket?

Autor / Redakteur: Dipl.-Ing. (FH) Stefan Luber / Nico Litzel

WebSocket ist ein auf dem Transportprotokoll TCP basierendes Netzwerkprotokoll, das bidirektionale Verbindungen zwischen einer Webanwendung und einem WebSocket-Server herstellt. Diese Verbindungen erlauben einen effizienten, schnellen und dynamischen Informationsaustausch. Sie eignen sich für Echtzeit-Web-Applikationen. Alle derzeit gängigen Webbrowser unterstützen WebSocket. Die WebSocket-Verbindung wird in einem Handshake-Verfahren über eine HTTP-Anfrage ausgehandelt und aufgebaut.

Firma zum Thema

(Bild: © aga7ta - stock.adobe.com)

WebSocket ist der Name eines auf dem Transmission Control Protocol (TCP) basierenden Netzwerkprotokolls. Es wurde von der IETF im Jahr 2011 im RFC 6455 spezifiziert und in weiteren RFCs wie RFC 7936, RFC 8307 und RFC 8441 aktualisiert und ergänzt. Mit WebSocket lassen sich bidirektionale Verbindungen zwischen Webanwendungen und WebSocket-Servern herstellen. Nach dem Aufbau einer WebSocket-Verbindung können Daten ohne weitere Anfragen oder Verbindungsaufbauprozeduren in beide Richtungen fließen. Der Informationsaustausch wird effizienter und schneller.

Im Gegensatz zu einer reinen HTTP-Kommunikation ist keine Anfrage des Clients notwendig, um neue Daten des Servers auszuliefern. Die zugrundeliegende TCP-Verbindung bleibt über den kompletten Zeitraum einer WebSocket-Kommunikation bestehen. Dank dem WebSocket-Protokoll lassen sich echtzeitfähige Anwendungen zwischen einem Client wie einem Webbrowser und einem Server wie einem Webserver realisieren. Alle derzeit gängigen Webbrowser wie Google Chrome, Apple Safari, Mozilla Firefox, Microsoft Edge oder Opera und serverseitige Frameworks oder Programmiersprachen wie Node.js, Java, Python, Ruby, .NET oder C++ unterstützen das WebSocket-Protokoll und WebSocket-Verbindungen. Als TCP-Ports kommen für WebSocket die Standard-Ports für die unverschlüsselte oder verschlüsselte HTTP-Kommunikation, Port 80 oder Port 443, zum Einsatz.

Die prinzipielle Funktionsweise des WebSocket-Protokolls

Voraussetzung für einen dynamischen, bidirektionalen und asynchronen Informationsaustausch in Echtzeit per WebSocket-Protokoll ist der vorherige Aufbau einer WebSocket-Verbindung. Der Verbindungsaufbau zwischen dem Client und dem Server findet in einem Handshake-Verfahren statt, das auf dem Hypertext Transfer Protocol (HTTP) basiert. Das Handshake-Verfahren nutzt den im Hypertext Transfer Protocol definierten Get-Request und die Standard HTTP-Ports für den verschlüsselten oder unverschlüsselten Informationsaustausch Port 80 oder Port 443.

Als Inhalt sendet der Client im Request die Anfrage für einen Protokollwechsel zu einer WebSocket-Verbindung sowie die gewünschte Zielressource. Gleichzeitig sendet er einen zufälligen sogenannten Sec-WebSocket-Key mit. Weitere gesendete Informationen des Clients sind die verwendete Protokollversion und das vom Client unterstützte auf WebSocket basierende höhere Protokoll. Akzeptiert der Server die WebSocket-Verbindungsanfrage des Clients, antwortet er mit dem HTTP-Switching-Protocols-Statuscode 101. Gleichzeitig sendet er einen aus dem Sec-WebSocket-Key generierten Antwortschlüssel Sec-WebSocket-Accept zurück und signalisiert damit, dass er genau diese Anfrage des Clients korrekt gelesen und verstanden hat. Zudem teilt der Server dem Client mit, dass er das auf WebSocket basierende höhere Protokoll des Clients kennt.

Im Handshake-Verfahren lassen sich noch sogenannte Extensions zwischen Server und Client aushandeln wie Kompression oder Multiplexing. Nach abgeschlossenem Handshake und dem Wechsel von HTTP zu WebSocket ist die Kommunikation nicht mehr mit HTTP abwärtskompatibel. Die Verbindung bleibt nach dem Handshake geöffnet und erlaubt dem Server oder dem Client Daten zu senden ohne eine vorherige Anfrage des Kommunikationspartners. Der asynchrone Datenaustausch ist bei offener Verbindung vollduplex in beide Richtungen möglich. Eine WebSocket-Sitzung kann von beiden Kommunikationspartnern auch wieder beendet werden.

Die verschiedenen Anwendungsmöglichkeiten des WebSocket-Protokolls

Das WebSocket-Protokoll ist für Web-Anwendungen prädestiniert, die einen effizienten, dynamischen und schnellen Informationsaustausch zwischen Client und Server erfordern. Dank der über die komplette Sitzung offenen WebSocket-Verbindung können Daten bidirektional ohne vorherige Anfrage mit wenig Overhead und geringer Zeitverzögerung quasi in Echtzeit bereitgestellt werden. Typische Anwendungen von WebSocket sind:

  • Online-Gaming und Multi-Player-Spiele
  • Online-Shopping, Echtzeit-Finanztransaktionen und Online-Börsenhandel
  • Online-Börsenticker, Live-Sport-Ticker und Online-Nachrichtenticker
  • echtzeitfähige Kommunikationsanwendungen wie Messenger
  • Anzeige dynamischer Inhalte in sozialen Netzwerken
  • Online-Versteigerungen
  • Support-Chats

Die Vorteile des WebSocket-Protokolls

Gegenüber einer Kommunikation mit reinem HTTP zwischen Client und Server bietet WebSocket für bestimmte Anwendungsfälle einige wichtige Vorteile. WebSocket ist aber nicht als Ersatz für HTTP, sondern als Ergänzung für genau diese Anwendungsfälle vorgesehen. Typische Vorteile des WebSocket-Protokolls sind:

  • einfache Realisierung schneller, dynamischer und effizienter Web-Anwendungen mit Echtzeitinformationsaustausch
  • geringer Protokolloverhead
  • niedrige Latenzzeiten
  • bidirektionaler, asynchroner Informationsaustausch ohne erneut Anfrage
  • Unterstützung von Push-Nachrichten
  • WebSocket-Verbindung muss nur einmalig aufgebaut werden
  • Unterstützung des WebSocket-Protokolls durch alle gängigen Webbrowser wie Google Chrome, Apple Safari, Mozilla Firefox, Microsoft Edge oder Opera
  • Erweiterungen und Sicherheitsfeatures für WebSocket-Verbindungen verfügbar
  • Handshake-Verfahren abwärtskompatibel mit HTTP
  • Verwendung der Standard-TCP-Ports 80 und 443 für HTTP-Nachrichten
  • Unterstützung durch viele serverseitige Frameworks und Programmiersprachen wie Node.js, Java, Python, Ruby, .NET oder C++

(ID:47543024)

Über den Autor