diff options
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; } |