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 zu verwendendes Subprotokoll in der Kommunikation auszuhandeln.
Dies kann ein gut verstandenes Protokoll wie SOAP oder WAMP sein, oder ein benutzerdefiniertes Protokoll, das vom Client und Server verstanden wird.
In einer Anfrage gibt der Header ein oder mehrere WebSocket-Subprotokolle 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 durch Kommas getrennte Werte einem einzelnen Header hinzugefügt werden.
In einer Antwort gibt er das vom Server gewählte Subprotokoll an. Dies muss das erste Subprotokoll sein, das der Server aus der in der Anforderungsheader bereitgestellten Liste unterstützt.
Der Anforderungs-Header wird automatisch vom Browser hinzugefügt und ausgefüllt, wobei die von der Anwendung im protocols
-Argument an WebSocket()
angegebenen Werte verwendet werden.
Das vom Server ausgewählte Subprotokoll steht der Webanwendung in WebSocket.protocol
zur Verfügung.
Header-Typ | Anforderungsheader, Antwort-Header |
---|---|
Verbotener Anforderungs-Header | Ja (Sec- -Präfix) |
Syntax
Sec-WebSocket-Protocol: <sub-protocols>
Direktiven
<sub-protocols>
-
Eine durch Kommas getrennte Liste von Subprotokoll-Namen in der Reihenfolge der Präferenz. Die Subprotokolle können aus dem IANA-WebSocket-Subprotokollnamen-Register ausgewählt werden oder ein benutzerdefinierter Name sein, der vom Client und Server gemeinsam verstanden wird.
Als Antwort-Header ist dies ein einzelnes Subprotokoll, das der Server ausgewählt hat.
Beispiele
WebSocket-Eröffnungs-Handshake
Das Subprotokoll wird in der ursprünglichen WebSocket-Handshake-Anfrage angegeben.
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 so anzugeben hat denselben Effekt:
Sec-WebSocket-Protocol: soap
Sec-WebSocket-Protocol: wamp
Die Antwort des Servers wird den Sec-WebSocket-Protocol
-Header enthalten, der das erste Subprotokoll auswählt, das er aus den Präferenzen des Clients unterstützt.
Unten wird das 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 in Writing WebSocket servers