summaryrefslogtreecommitdiff
path: root/std/ws/mod.ts
diff options
context:
space:
mode:
authorcrowlKats <13135287+crowlKats@users.noreply.github.com>2020-11-26 16:38:15 +0100
committerGitHub <noreply@github.com>2020-11-26 16:38:15 +0100
commit2031418a24e6df65a600349db940a555b1220088 (patch)
tree6b4a6fa1206573b7a19bb14e9e4053218456c3a4 /std/ws/mod.ts
parent01e87119ea15f72ebc35ec27ba2d0498e0778f9c (diff)
feat(std/ws): protocol & version support (#8505)
Co-authored-by: Tom Wieland <tom.wieland@gmail.com>
Diffstat (limited to 'std/ws/mod.ts')
-rw-r--r--std/ws/mod.ts19
1 files changed, 14 insertions, 5 deletions
diff --git a/std/ws/mod.ts b/std/ws/mod.ts
index 1e40c288b..a86c18482 100644
--- a/std/ws/mod.ts
+++ b/std/ws/mod.ts
@@ -427,13 +427,22 @@ export async function acceptWebSocket(req: {
throw new Error("sec-websocket-key is not provided");
}
const secAccept = createSecAccept(secKey);
+ const newHeaders = new Headers({
+ Upgrade: "websocket",
+ Connection: "Upgrade",
+ "Sec-WebSocket-Accept": secAccept,
+ });
+ const secProtocol = headers.get("sec-websocket-protocol");
+ if (typeof secProtocol === "string") {
+ newHeaders.set("Sec-WebSocket-Protocol", secProtocol);
+ }
+ const secVersion = headers.get("sec-websocket-version");
+ if (typeof secVersion === "string") {
+ newHeaders.set("Sec-WebSocket-Version", secVersion);
+ }
await writeResponse(bufWriter, {
status: 101,
- headers: new Headers({
- Upgrade: "websocket",
- Connection: "Upgrade",
- "Sec-WebSocket-Accept": secAccept,
- }),
+ headers: newHeaders,
});
return sock;
}