Das WebSocket-Protokoll ist für die Zusammenarbeit mit der vorhandenen Netzwerkinfrastruktur konzipiert. Als Teil dieses Designprinzips definiert die Protokollspezifikation für eine WebSocket-Verbindung eine HTTP-Verbindung als Beginn ihres Lebenszyklus und gewährleistet so vollständige Abwärtskompatibilität mit der Welt vor WebSocket. Im Allgemeinen wird der Wechsel von WebSocket vom HTTP-Protokoll als WebSocket-Handshake bezeichnet.
Der Browser sendet eine Anfrage an den Server, die angibt, dass er das WebSocket-Protokoll von HTTP wechseln möchte. Der Wunsch des Kunden, ausgedrückt durch den Upgrade-Titel, der Code lautet wie folgt:
Wenn der Server das WebSocket-Protokoll versteht, stimmt er dem Protokollwechsel über den Upgrade-Header zu.
An diesem Punkt bricht die HTTP-Verbindung ab und ersetzt die WebSocket-Verbindung durch dieselbe zugrunde liegende TCP/IP-Verbindung. WebSocket-Verbindungen verwenden standardmäßig HTTP (80) und denselben Port wie HTTPS (443).
Nachdem die Verbindung hergestellt wurde, können WebSocket-Datenrahmen im Vollduplexmodus zwischen Client und Server hin und her gesendet werden. Sowohl Text- als auch Binärrahmen können gleichzeitig in beide Richtungen gesendet werden. Nur zwei Datenbytes werden minimal gerahmt. Bei Textrahmen beginnt jeder Rahmen bei 0x00 Byte und endet bei 0xff Byte und enthält UTF-8-Daten. WebSocket-Textrahmen verwenden ein Abschlusszeichen, während Binärrahmen eine Präfixlänge verwenden.