Sobes.tech
Junior
180

Was ist WebSocket?

Antwort von AI

sobes.tech KI

Anwendungsschichtprotokoll, das einen bidirektionalen, vollduplexen Kommunikationskanal über eine einzelne TCP-Verbindung bereitstellt. Wird für Echtzeitanwendungen verwendet: Chats, Online-Spiele, Handelsplattformen.

Unterschiede zu HTTP:

  • HTTP: Der Client sendet eine Anfrage, der Server antwortet (einseitig). Es wird für jede Anfrage eine neue Verbindung hergestellt oder die Verbindung wird durch Keep-Alive wiederverwendet.
  • WebSocket: Nach dem Verbindungsaufbau können Client und Server jederzeit Daten senden, ohne die Verbindung neu herzustellen (bidirektional).

Verbindungseinrichtung:

Verwendet HTTP für den initialen "Handshake". Der Client sendet eine HTTP-Anfrage mit den Headern Upgrade: websocket und Connection: Upgrade. Der Server antwortet mit einer HTTP-Antwort mit Status 101 Switching Protocols.

Datenframes:

Die Datenübertragung erfolgt in Form von Frames, was die Übertragung verschiedener Datentypen (Text, Binärdaten) ermöglicht.

Beispiel für die Verbindungsherstellung (schematisch):

Client -> Server (Upgrade-Anfrage)

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

Server -> Client (Upgrade-Antwort)

HTTP/1.1 101 Switching Protocols Upgrade: websocket Connection: Upgrade Sec-WebSocket-Accept: s3pPLMBiTxaQ9kYGzzhZgYesItU=

Danach beginnt der Austausch von WebSocket-Frames.

Vorteile:

  • Geringe Latenz.
  • Reduzierte Serverbelastung (keine ständigen Polling notwendig).
  • Möglichkeit, Daten in Echtzeit zu übertragen.

Nachteile:

  • Notwendigkeit der Unterstützung auf Client- und Serverseite.
  • Komplexere Implementierung im Vergleich zu einer einfachen HTTP-Anfrage.

In Java werden für die Arbeit mit WebSocket häufig Bibliotheken verwendet:

  • Java API für WebSocket (JSR 356).
  • Spring WebSocket.
  • Netty.