Websockets

Eintrag zuletzt aktualisiert am: 25.10.2012

Websockets ist ein W3C Standard (RFC 6455 vom Dezember 2011) für bidirektionale Kommunikation über Port 80 und 443, einsetzbar zum Versand von Nachrichten von Webservern and Webbrowser (nachdem der Browser erstmals die Kommunikation eingeleitet hat). HTTP-Request/Response, aber TCP-Verbindung bleibt offen ("Upgrade")

Websockets ist ein relativ junger, neuer W3C Standard (RFC 6455 vom Dezember 2011) für bidirektionale Kommunikation zwischen Webbrowser und Webserver. Bisher war die HTTP-Kommunikation zwischen zwischen Webbrowser und Webserver auf das Anfrage-Antwort-Modell beschränkt: Der Browser stellt eine Anfrage und der Webserver kann eine Antwort senden. Der Webserver kann aber nicht selbst aktiv an den Browser Daten senden. Der Browser kann lediglich durch wiederholtes Anfragen (Polling) beim Server nachfragen, ob es neue Daten gibt. Websockets basieren auf HTTP. Nachdem der Browser erstmals die Kommunikation per HTTP eingeleitet hat, bleibt die darunterliegende TCP-Verbindung bleibt offen. Man nennt dies ein „Upgrade“, das der Webbrowser im HTTP-Header der Anfrage explizit anfordern muss (Upgrade: Websocket). Der Webserver bestätigt dies in der HTTP-Antwort. Websockets-Kommunikation wird über Port 80 und 443 (SSL) abgewickelt, als Prefixe kommen ws: und wss: (SSL) zum Einsatz. Clientseitig muss mit JavaScript die Interaktion eingeleitet werden und die Nachrichten des Webserver behandelt werden. Dafür benötigt man das Objekt WebSocket mit den Operationen OnOpen(), OnMessage(), OnClose().

Voraussetzungen

Voraussetzung ist ein Browser, der Websockets unterstützt. Das sind aktuell:
  • Internet Explorer seit Version 10
  • Firefox seit Version 7
  • Chrome seit Version 4
  • Opera seit Version 1

Aber auch serverseitig müssen Websockets explizit unterstützt werden. Microsoft bietet dies nur im Internet Information Server Version 8.0 in Windows 8 und Windows Server 2012. Auch IIS Express 8.0 kann Websockets, aber der Visual Web Development Webserver (auch in der aktuellen Version in Visual Studio 2012) ist da außen vor. Zu beachten ist, dass auf Windows 8 und Windows Server 2012 die Websocket-Unterstützung eine optionale Funktion ist, die über die Systemsteuerung bzw. den Server Manager erst installiert werden muss. Zum Programmieren der Websockets auf dem Server benötigt man dort WCF 4.5 oder ASP.NET 4.5.