WebSocket

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen


Was ist WebSocket?

  • WebSocket ist ein Protokoll für eine dauerhafte Verbindung zwischen Browser und Server.
  • Im Gegensatz zu HTTP bleibt die Verbindung offen und erlaubt beidseitige Kommunikation.
  • WebSocket beginnt mit einem HTTP-Handshake und wechselt dann das Protokoll.

Warum wird WebSocket verwendet?

  • HTTP ist zustandslos und schließt nach jeder Antwort die Verbindung.
  • Mit WebSocket können Server und Clients jederzeit Nachrichten austauschen.
  • Geeignet für Live-Chats, Browsergames, Dashboards, Steuerungssysteme usw.

Ablauf einer WebSocket-Verbindung

  • Der Client sendet einen normalen HTTP-Request mit Upgrade-Header:
GET /socket HTTP/1.1
Host: example.org
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Key: xyz123==
Sec-WebSocket-Version: 13
  • Der Server antwortet mit einem Protokollwechsel:
HTTP/1.1 101 Switching Protocols
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Accept: abc456==
  • Ab hier läuft die Verbindung dauerhaft über WebSocket.

Voraussetzungen für Apache2

  • Das Modul proxy_wstunnel muss aktiviert sein:
  • a2enmod proxy_wstunnel
  • Die Weiterleitung erfolgt mit ws:// oder wss://:
ProxyPass /socket ws://127.0.0.1:3000/socket
ProxyPassReverse /socket ws://127.0.0.1:3000/socket

Unterschied ws:// und wss://

  • ws:// wird für unverschlüsselte Verbindungen verwendet (wie http)
  • wss:// ist die verschlüsselte Variante (wie https)
  • Bei HTTPS-Seiten muss wss:// verwendet werden

Fazit

  • WebSocket ermöglicht schnelle und effiziente Kommunikation in Echtzeit
  • In Apache2 ist dafür die Kombination aus mod_proxy und mod_proxy_wstunnel erforderlich
  • Wird häufig mit Backend-Systemen wie Node.js oder Python-Diensten kombiniert