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:
Sec-WebSocket-Protocol: <sub-protocols>
Antwort:
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.
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:
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/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
Sec-WebSocket-Accept
Sec-WebSocket-Key
Sec-WebSocket-Version
Sec-WebSocket-Extensions
- Der WebSocket-Handshake und Subprotokolle in Writing WebSocket servers