Websockets
Was ist ein ein Websocket?
Das WebSocket Protokoll stellt eine Verbindung zwischer einer Webanwendung und einem WebSocket-Server bzw. einem Web-Server, der WebSockets unterstützt, herzustellen. Technisch betrachtet startet das WebSocket-Protokoll wie ein HTTP-Request/Response-Zyklus, nur, dass nach der Übertragung der HTTP-Request- und -Response-Header die zugrundeliegende TCP-Connection bestehen und dadurch für binäre bzw. Zeichenketten-Übertragung in beide Richtungen frei wird. Dadurch kann auch der Server zu jedem Zeitpunkt Daten zum Client schicken. Neben der browser-seitigen API benötigt man zum Experimentieren mit WebSockets einen passenden Server.
Server
Google stellt dazu eine Python-Anwendung bereit, die sich sowohl als selbstständiger Webserver als auch als Apache-Modul verwenden lässt. Mittlerweile gibt es auch einen Webserver auf Basis von PHP.
Protokoll & Handshake
WebSockets spricht nicht mehr HTTP, sondern ein neues Protokoll. Es soll weniger geschwätzig sein, da es nach dem Festlegen der Verbindungsparameter auf den Austausch sich wiederholender Header verzichtet.
Browser sendet folgenden String zum Server:
GET /demo HTTP/1.1
Host: example.com
Connection: Upgrade
Sec-WebSocket-Key2: 12998 5 Y3 1 .P00
Sec-WebSocket-Protocol: sample
Upgrade: WebSocket
Sec-WebSocket-Key1: 4 @1 46546xW%0l 1 5
Origin: http://example.com
^n:ds[4U
Die Anwort vom Server:
HTTP/1.1 101 WebSocket Protocol Handshake
Upgrade: WebSocket
Connection: Upgrade
Sec-WebSocket-Origin: http://example.com
Sec-WebSocket-Location: ws://example.com/demo
Sec-WebSocket-Protocol: sample
8jKS'y:G*Co,Wxa-
Links
PHP Websocket-Server
PHP Beispiel auf Basis der Websocket-Klasse