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
Request-Header und Response-Header wird im WebSocket Eröffnungshandshake verwendet, um ein Subprotokoll für die Kommunikation zu verhandeln. Dies kann ein allgemein bekanntes Protokoll wie SOAP oder WAMP sein, oder ein benutzerdefiniertes Protokoll, das vom Client und Server verstanden wird.
In einem Request gibt der Header eines oder mehrere WebSocket-Subprotokolle an, die die Webanwendung gerne verwenden möchte, in der Reihenfolge der Präferenz. Diese können als Protokollwerte in mehreren Headern hinzugefügt werden oder als durch Kommas getrennte Werte in einem einzigen Header.
In einer Response gibt er das vom Server ausgewählte Subprotokoll an. Dies muss das erste Subprotokoll sein, das der Server aus der im Request-Header bereitgestellten Liste unterstützt.
Der Request-Header wird automatisch vom Browser hinzugefügt und mit den vom Anwendungsprotokoll angegebenen Werten im protocols
Argument für WebSocket()
gefüllt. Das vom Server ausgewählte Subprotokoll wird der Webanwendung in WebSocket.protocol
zur Verfügung gestellt.
Header-Typ | Request-Header, Response-Header |
---|---|
Verbotener Request-Header | Ja (Sec- Präfix) |
Syntax
Sec-WebSocket-Protocol: <sub-protocols>
Direktiven
<sub-protocols>
-
Eine Liste von Subprotokollnamen, getrennt durch Kommas, in der Reihenfolge der Präferenz. Die Subprotokolle können aus dem IANA WebSocket Subprotocol Name Registry ausgewählt werden oder ein benutzerdefinierter Name sein, der vom Client und Server gemeinsam verstanden wird.
Als Response-Header ist dies ein einzelnes Subprotokoll, das vom Server ausgewählt wurde.
Beispiele
WebSocket-Eröffnungshandshake
Das Subprotokoll wird im ursprünglichen WebSocket-Handshake-Request angegeben. Der untenstehende Request 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 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 dies als soap
dargestellt:
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
- Das WebSocket-Handshake und Subprotokolle in Writing WebSocket servers