summary refs log tree commit diff
path: root/src/events/Connection.ts
diff options
context:
space:
mode:
Diffstat (limited to 'src/events/Connection.ts')
-rw-r--r--src/events/Connection.ts11
1 files changed, 9 insertions, 2 deletions
diff --git a/src/events/Connection.ts b/src/events/Connection.ts

index 0c4dd2b8..34274d9c 100644 --- a/src/events/Connection.ts +++ b/src/events/Connection.ts
@@ -5,6 +5,7 @@ import { Message } from "./Message"; import { setHeartbeat } from "../util/setHeartbeat"; import { Send } from "../util/Send"; import { CLOSECODES, OPCODES } from "../util/Constants"; +import { createDeflate } from "zlib"; // TODO: check rate limit // TODO: specify rate limit in config @@ -24,8 +25,14 @@ export async function Connection(this: Server, socket: WebSocket, request: Incom if (socket.version != 8) return socket.close(CLOSECODES.Invalid_API_version); // @ts-ignore - socket.compression = searchParams.get("compress") || ""; - // TODO: compression + socket.compress = searchParams.get("compress") || ""; + if (socket.compress) { + if (socket.compress !== "zlib-stream") return socket.close(CLOSECODES.Decode_error); + socket.deflate = createDeflate({ chunkSize: 65535 }); + socket.deflate.on("data", (chunk) => socket.send(chunk)); + } + + socket.sequence = 0; setHeartbeat(socket);