:zap: zlib compression
2 files changed, 9 insertions, 0 deletions
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;
|