Sec-WebSocket-Protocol

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.

Der HTTP Sec-WebSocket-Protocol Anforderungs- und Antwortheader wird im WebSocket Eröffnungs-Handshake verwendet, um ein Subprotokoll auszuhandeln, das in der Kommunikation verwendet wird. Dies kann ein wohlbekanntes Protokoll wie SOAP oder WAMP sein oder auch ein benutzerdefiniertes Protokoll, das vom Client und Server verstanden wird.

In einer Anfrage spezifiziert der Header ein oder mehrere WebSocket-Subprotokolle, die die Webanwendung verwenden möchte, in der Reihenfolge ihrer Präferenz. Diese können als Protokollwerte in mehreren Headers hinzugefügt werden, oder als durch Kommata getrennte Werte in einem einzelnen Header hinzugefügt werden.

In einer Antwort spezifiziert er das vom Server ausgewählte Subprotokoll. Dies muss das erste Subprotokoll sein, das der Server aus der Liste unterstützt, die im Anforderungsheader bereitgestellt wurde.

Der Anforderungsheader wird automatisch vom Browser hinzugefügt und ausgefüllt, indem die Werte verwendet werden, die von der Anwendung im protocols-Argument des WebSocket() angegeben werden. Das vom Server ausgewählte Subprotokoll steht der Webanwendung in WebSocket.protocol zur Verfügung.

Header-Typ Anforderungsheader, Antwortheader
Verbotener Header-Name Ja (Sec--Präfix)

Syntax

Anfrage:

http
Sec-WebSocket-Protocol: <sub-protocols>

Antwort:

http
Sec-WebSocket-Protocol: <selected-sub-protocol>

Direktiven

<sub-protocols>

Eine durch Kommata getrennte Liste von Subprotokollnamen in der Reihenfolge der Präferenz. Die Subprotokolle können aus dem IANA WebSocket Subprotocol Name Registry ausgewählt werden oder können ein benutzerdefinierter Name sein, der vom Client und dem Server gemeinsam verstanden wird.

Beispiele

WebSocket-Eröffnungs-Handshake

Das Subprotokoll wird in der originalen WebSocket-Handshake-Anfrage spezifiziert. Die untenstehende Anfrage zeigt, dass der Client soap bevorzugt, aber auch wamp unterstützt.

http
GET /chat HTTP/1.1
Host: example.com:8000
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ==
Sec-WebSocket-Version: 13
Sec-WebSocket-Protocol: soap, wamp

Die Protokolle auf diese Weise zu spezifizieren hat den gleichen Effekt:

http
Sec-WebSocket-Protocol: soap
Sec-WebSocket-Protocol: wamp

Die Antwort vom Server wird den Sec-WebSocket-Protocol-Header enthalten und das erste Subprotokoll auswählen, das es aus den Präferenzen des Clients unterstützt. Unten wird dies als soap gezeigt:

http
HTTP/1.1 101 Switching Protocols
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Accept: s3pPLMBiTxaQ9kYGzzhZRbK+xOo=
Sec-WebSocket-Protocol: soap

Spezifikationen

Specification
The WebSocket Protocol
# section-11.3.4

Browser-Kompatibilität

BCD tables only load in the browser

Siehe auch