WebSocket
WebSocket ist ein Kommunikationsprotokoll für eine beständige, bidirektionale Vollduplex-TCP-Verbindung, die vom Webbrowser eines Anwenders zu einem Server besteht.
Eine WebSocket-Verbindung wird initiiert, indem ein sogenannter WebSocket Handshake Request von der HTTP-Verbindung eines Browsers an einem Server geschickt wird, um die Verbindung upzugraden. Zusammen mit dem Upgrade Request Header beinhaltet der Handshake Request einen 64-Bit-Sec-WebSocket-Schlüssel-Header. Der Server antwortet mit einem Hash des Schlüssels in einem Sec-WebSocket-Auth Header. Ein derartiger Austausch der Header unterbindet, dass ein Caching Proxy vorangegangene WebSocket-Übertragungen abermals sendet.
Ab diesem Zeitpunkt ist die Verbindung binär und nicht zum HTTP-Protokoll kompatibel. Eine Serveranwendung ist sich aller WebSocket-Verbindungen bewusst und kann mit jeder individuell kommunizieren. Solange ein WebSocket offenbleibt, kann entweder der Server oder der Anwender Nachrichten zu jeder Zeit schicken, bis eben einer der Partner die Sitzung beendet. Die Kommunikation lässt sich von beiden Seiten initiieren und dadurch ist ereignisgesteuerte Webprogrammierung möglich. Bei HTTP kann im Gegensatz dazu nur der Anwender neue Daten anfordern.
WebSocket wurde erstmalig in der HTML5-Spezifikation gesehen und hieß TCPConnection. Das war ein Platzhalter für ein TCP-basiertes Socket API. Ian Hickson und Michael Carter haben das Protokoll entwickelt. Von der IETF wurde es unter RFC 6455 im Jahre 2011 standardisiert. WebSocket wird von fast allen großen Webbrowsern unterstützt. Dazu gehören Firefox, Chrome, Opera, Edge und Internet Explorer.