fix(socket): use socket.writable to check if its safe to send a message

This commit is contained in:
MARCROCK22 2024-08-25 21:40:32 +00:00
parent 9b2393f001
commit 3fb57ccc79

View File

@ -177,6 +177,8 @@ export class SeyfertWebSocket {
} }
private _write(buffer: Buffer, opcode: number) { private _write(buffer: Buffer, opcode: number) {
if (!this.socket?.writable)
return;
const length = buffer.length; const length = buffer.length;
let frame; let frame;
// Kinda same logic as above, but client-side // Kinda same logic as above, but client-side
@ -199,17 +201,17 @@ export class SeyfertWebSocket {
this.socket?.write(frame); 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) { close(code: number, reason: string) {
this.__closeCalled = true; this.__closeCalled = true;
@ -279,14 +281,14 @@ export class SeyfertWebSocket {
// @ts-expect-error this is private, thanks nodejs // @ts-expect-error this is private, thanks nodejs
const readable = this.socket._readableState as const readable = this.socket._readableState as
| { | {
bufferIndex: number; bufferIndex: number;
buffer: Buffer[]; buffer: Buffer[];
} }
| { | {
buffer: { buffer: {
head: ReadableHeadData; head: ReadableHeadData;
}; };
}; };
// Num of bit read // Num of bit read
let bitIndex = 0; let bitIndex = 0;
// Num of bit read counting since start // Num of bit read counting since start