Archived
1
0

Support permessage-deflate web socket extension (#2846)

This commit is contained in:
Asher
2021-03-10 13:14:24 -06:00
committed by GitHub
parent f70a73bb89
commit 5a1f62a8fb
2 changed files with 16 additions and 11 deletions

View File

@ -199,16 +199,20 @@ wsRouter.ws("/", ensureAuthenticated, async (req) => {
.createHash("sha1")
.update(req.headers["sec-websocket-key"] + magic)
.digest("base64")
req.ws.write(
[
"HTTP/1.1 101 Switching Protocols",
"Upgrade: websocket",
"Connection: Upgrade",
`Sec-WebSocket-Accept: ${reply}`,
].join("\r\n") + "\r\n\r\n",
)
// TODO: Parse this header properly. Currently unused so haven't bothered.
const responseHeaders = [
"HTTP/1.1 101 Switching Protocols",
"Upgrade: websocket",
"Connection: Upgrade",
`Sec-WebSocket-Accept: ${reply}`,
]
// TODO: Parse this header properly.
const extensions = req.headers["sec-websocket-extensions"]
const permessageDeflate = extensions ? extensions.includes("permessage-deflate") : false
responseHeaders.push("Sec-WebSocket-Extensions: permessage-deflate; server_max_window_bits=15")
req.ws.write(responseHeaders.join("\r\n") + "\r\n\r\n")
await vscode.sendWebsocket(req.ws, req.query, permessageDeflate)
})