From e4115d13ef239c2aade5116e58ecc2693092c8e9 Mon Sep 17 00:00:00 2001 From: Flam3rboy <34555296+Flam3rboy@users.noreply.github.com> Date: Tue, 6 Apr 2021 04:06:32 +0200 Subject: :zap: zlib compression --- src/util/Send.ts | 6 ++++++ src/util/WebSocket.ts | 3 +++ 2 files changed, 9 insertions(+) (limited to 'src/util') diff --git a/src/util/Send.ts b/src/util/Send.ts index d38865b3..b691b525 100644 --- a/src/util/Send.ts +++ b/src/util/Send.ts @@ -1,6 +1,7 @@ import erlpack from "erlpack"; import { promisify } from "util"; import { Payload } from "../util/Constants"; +import { deflateSync } from "zlib"; import WebSocket from "./WebSocket"; @@ -11,6 +12,11 @@ export async function Send(socket: WebSocket, data: Payload) { else if (socket.encoding === "json") buffer = JSON.stringify(data); // TODO: compression + if (socket.deflate) { + socket.deflate.write(buffer); + socket.deflate.flush(); + return; + } return new Promise((res, rej) => { socket.send(buffer, (err) => { diff --git a/src/util/WebSocket.ts b/src/util/WebSocket.ts index 5d107d9c..4f866ad5 100644 --- a/src/util/WebSocket.ts +++ b/src/util/WebSocket.ts @@ -1,14 +1,17 @@ import { Intents } from "fosscord-server-util"; import WS, { Server, Data } from "ws"; +import { Deflate } from "zlib"; interface WebSocket extends WS { version: number; user_id: bigint; encoding: "etf" | "json"; compress?: "zlib-stream"; + deflate?: Deflate; heartbeatTimeout: NodeJS.Timeout; readyTimeout: NodeJS.Timeout; intents: Intents; + sequence: number; } export default WebSocket; -- cgit 1.5.1