summary refs log tree commit diff
path: root/src/gateway/util
diff options
context:
space:
mode:
authorRory& <root@rory.gay>2026-08-15 17:09:40 +0200
committerRory& <root@rory.gay>2026-08-15 17:15:40 +0200
commit9f5f2a2c3b71550f21f75500534bf1332b94f771 (patch)
tree4572ef19b7e25fee06da36a62105b197cb45fade /src/gateway/util
parentAllow avatar_description field in profile update (diff)
downloadserver-ts-dev/gwsep.tar.xz
Decouple gateway connection state from inner ws object github/dev/gwsep dev/gwsep
Diffstat (limited to 'src/gateway/util')
-rw-r--r--src/gateway/util/Heartbeat.ts2
-rw-r--r--src/gateway/util/Send.ts6
-rw-r--r--src/gateway/util/WebSocket.ts17
3 files changed, 15 insertions, 10 deletions
diff --git a/src/gateway/util/Heartbeat.ts b/src/gateway/util/Heartbeat.ts

index 5beb7e99..6ec067cb 100644 --- a/src/gateway/util/Heartbeat.ts +++ b/src/gateway/util/Heartbeat.ts
@@ -23,5 +23,5 @@ import { WebSocket } from "./WebSocket"; export function setHeartbeat(socket: WebSocket) { if (socket.heartbeatTimeout) clearTimeout(socket.heartbeatTimeout); - socket.heartbeatTimeout = setTimeout(() => socket.close(CLOSECODES.Session_timed_out), 1000 * 45); + socket.heartbeatTimeout = setTimeout(() => socket.rawSocket.close(CLOSECODES.Session_timed_out), 1000 * 45); } diff --git a/src/gateway/util/Send.ts b/src/gateway/util/Send.ts
index f857a400..60eda0e2 100644 --- a/src/gateway/util/Send.ts +++ b/src/gateway/util/Send.ts
@@ -69,13 +69,13 @@ export async function Send(socket: WebSocket, data: Payload) { } return new Promise((res, rej) => { - if (socket.readyState !== 1) { + if (socket.rawSocket.readyState !== 1) { // return rej("socket not open"); - socket.close(); + socket.rawSocket.close(); return; } - socket.send(buffer, (err) => { + socket.rawSocket.send(buffer, (err) => { if (err) return rej(err); return res(null); }); diff --git a/src/gateway/util/WebSocket.ts b/src/gateway/util/WebSocket.ts
index 50c7bbb1..cf912ddf 100644 --- a/src/gateway/util/WebSocket.ts +++ b/src/gateway/util/WebSocket.ts
@@ -24,8 +24,13 @@ import { Intents, ListenEventOpts, Permissions } from "@spacebar/util"; import { QoSPayload } from "../opcodes/Heartbeat"; import { Capabilities } from "./Capabilities"; -export interface WebSocket extends WS { - recentTransactions: string[]; +export class WebSocket { + rawSocket: WS; + constructor(socket: WS) { + this.rawSocket = socket; + } + + recentTransactions: string[] = []; version: number; user_id: string; session_id: string; @@ -44,10 +49,10 @@ export interface WebSocket extends WS { heartbeatTimeout: NodeJS.Timeout; readyTimeout: NodeJS.Timeout; intents: Intents; - sequence: number; - permissions: Record<string, Permissions>; - events: Record<string, undefined | (() => Promise<unknown>)>; - member_events: Record<string, () => Promise<unknown>>; + sequence: number = 0; + permissions: Record<string, Permissions> = {}; + events: Record<string, undefined | (() => Promise<unknown>)> = {}; + member_events: Record<string, () => Promise<unknown>> = {}; listen_options: ListenEventOpts; capabilities?: Capabilities; large_threshold: number;