Sec-WebSocket-Protocol header
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 Antwort-Header wird im WebSocket Eröffnungs-Handshake verwendet, um ein Sub-Protokoll zu verhandeln, das in der Kommunikation verwendet werden soll.
Dies kann ein wohlbekanntes Protokoll wie SOAP oder WAMP sein oder ein benutzerdefiniertes Protokoll, das von Client und Server verstanden wird.
In einer Anfrage gibt der Header ein oder mehrere WebSocket-Sub-Protokolle an, die die Webanwendung in der Reihenfolge der Präferenz verwenden möchte. Diese können als Protokollwerte in mehreren Headern hinzugefügt oder als kommagetrennte Werte zu einem einzigen Header hinzugefügt werden.
In einer Antwort gibt er das vom Server ausgewählte Sub-Protokoll an. Dies muss das erste Sub-Protokoll sein, das der Server aus der in der Anforderung angegebenen Liste unterstützt.
Der Anforderungs-Header wird automatisch vom Browser hinzugefügt und ausgefüllt, indem Werte verwendet werden, die von der Anwendung im protocols
-Argument an die WebSocket()
-Funktion übergeben werden.
Das vom Server gewählte Sub-Protokoll wird der Webanwendung in WebSocket.protocol
zur Verfügung gestellt.
Header-Typ | Anforderungs-Header, Antwort-Header |
---|---|
Verbotener Anforderungs-Header | Ja (Sec- -Präfix) |
Syntax
Anforderung:
Sec-WebSocket-Protocol: <sub-protocols>
Antwort:
Sec-WebSocket-Protocol: <selected-sub-protocol>
Direktiven
<sub-protocols>
-
Eine kommagetrennte Liste von Sub-Protokollnamen in der Reihenfolge der Präferenz. Die Sub-Protokolle können aus dem IANA WebSocket Subprotocol Name Registry ausgewählt werden oder ein benutzerdefinierter Name sein, der gemeinsam vom Client und dem Server verstanden wird.
Beispiele
WebSocket-Eröffnungs-Handshake
Das Sub-Protokoll wird in der ursprünglichen WebSocket-Handshake-Anforderung angegeben.
Die untenstehende Anforderung 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 wie folgt anzugeben, hat den gleichen Effekt:
Sec-WebSocket-Protocol: soap
Sec-WebSocket-Protocol: wamp
Die Antwort des Servers wird den Sec-WebSocket-Protocol
-Header enthalten, der das erste Sub-Protokoll auswählt, das er von 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
Siehe auch
Sec-WebSocket-Accept
Sec-WebSocket-Key
Sec-WebSocket-Version
Sec-WebSocket-Extensions
- Der WebSocket-Handshake und Subprotokolle im Writing WebSocket servers