diff options
author | crowlKats <13135287+crowlKats@users.noreply.github.com> | 2020-11-26 16:38:15 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-11-26 16:38:15 +0100 |
commit | 2031418a24e6df65a600349db940a555b1220088 (patch) | |
tree | 6b4a6fa1206573b7a19bb14e9e4053218456c3a4 /std/ws/mod.ts | |
parent | 01e87119ea15f72ebc35ec27ba2d0498e0778f9c (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.ts | 19 |
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; } |