summaryrefslogtreecommitdiff
path: root/std/ws/mod.ts
diff options
context:
space:
mode:
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;
}