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 für die Kommunikation auszuhandeln. Dies kann ein bekanntes 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 verwenden möchte, in der Reihenfolge der Priorität. Diese können als Protokollwerte in mehreren Headern hinzugefügt werden oder als kommagetrennte Werte, die zu einem einzelnen Header hinzugefügt werden.
In einer Antwort gibt es das vom Server ausgewählte Subprotokoll an. Dies muss das erste Subprotokoll sein, das der Server aus der im Anforderungsheader angegebenen Liste unterstützt.
Der Anforderungsheader wird automatisch vom Browser hinzugefügt und mit Werten ausgefüllt, die von der Anwendung im protocols
-Argument der WebSocket()
-Methode angegeben werden. Das vom Server ausgewählte Subprotokoll ist der Webanwendung in WebSocket.protocol
verfügbar.
Header-Typ | Anforderungsheader, Antwortheader |
---|---|
Verbotener Anforderungsheader | 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 Subprotokollnamen in der Reihenfolge der Präferenz. Die Subprotokolle können aus dem IANA WebSocket Subprotocol Name Registry ausgewählt werden oder es kann sich um einen benutzerdefinierten Namen handeln, der vom Client und Server gemeinsam verstanden wird.
Beispiele
WebSocket-Eröffnungshandshake
Das Subprotokoll wird in der ursprünglichen WebSocket-Handshake-Anforderung 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 anzugeben, hat die gleiche Wirkung:
Sec-WebSocket-Protocol: soap
Sec-WebSocket-Protocol: wamp
Die Antwort des Servers wird den Header Sec-WebSocket-Protocol
enthalten, der das erste Subprotokoll aus den Präferenzen des Clients auswählt, das der Server 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
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