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.