From 3fb57ccc792010785060e64459e73429194605ff Mon Sep 17 00:00:00 2001 From: MARCROCK22 Date: Sun, 25 Aug 2024 21:40:32 +0000 Subject: [PATCH] fix(socket): use socket.writable to check if its safe to send a message --- src/websocket/discord/socket/custom.ts | 28 ++++++++++++++------------ 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/src/websocket/discord/socket/custom.ts b/src/websocket/discord/socket/custom.ts index f87d4dd..c0785aa 100644 --- a/src/websocket/discord/socket/custom.ts +++ b/src/websocket/discord/socket/custom.ts @@ -177,6 +177,8 @@ export class SeyfertWebSocket { } private _write(buffer: Buffer, opcode: number) { + if (!this.socket?.writable) + return; const length = buffer.length; let frame; // Kinda same logic as above, but client-side @@ -199,17 +201,17 @@ export class SeyfertWebSocket { this.socket?.write(frame); } - onping(_data: string) {} + onping(_data: string) { } - onpong(_data: string) {} + onpong(_data: string) { } - onopen() {} + onopen() { } - onmessage(_payload: { data: string | Buffer }) {} + onmessage(_payload: { data: string | Buffer }) { } - onclose(_close: { code: number; reason: string }) {} + onclose(_close: { code: number; reason: string }) { } - onerror(_err: unknown) {} + onerror(_err: unknown) { } close(code: number, reason: string) { this.__closeCalled = true; @@ -279,14 +281,14 @@ export class SeyfertWebSocket { // @ts-expect-error this is private, thanks nodejs const readable = this.socket._readableState as | { - bufferIndex: number; - buffer: Buffer[]; - } + bufferIndex: number; + buffer: Buffer[]; + } | { - buffer: { - head: ReadableHeadData; - }; - }; + buffer: { + head: ReadableHeadData; + }; + }; // Num of bit read let bitIndex = 0; // Num of bit read counting since start