From b9117f552425ec43470ee04c0cc24a5bed70c8db Mon Sep 17 00:00:00 2001 From: MARCROCK22 <57925328+MARCROCK22@users.noreply.github.com> Date: Mon, 1 Apr 2024 21:59:50 -0400 Subject: [PATCH] fix: ws priority --- package-lock.json | 10 +++++----- src/client/workerclient.ts | 2 +- src/websocket/discord/shard.ts | 16 ++++++++-------- src/websocket/discord/sharder.ts | 2 +- src/websocket/structures/index.ts | 4 ++-- 5 files changed, 17 insertions(+), 17 deletions(-) diff --git a/package-lock.json b/package-lock.json index 3bc5c55..ab400ca 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "seyfert", - "version": "1.2.0", + "version": "1.2.1", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "seyfert", - "version": "1.2.0", + "version": "1.2.1", "license": "Apache-2.0", "dependencies": { "chokidar": "^3.6.0", @@ -997,9 +997,9 @@ } }, "node_modules/discord-api-types": { - "version": "0.37.77", - "resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.37.77.tgz", - "integrity": "sha512-AkEn9nZA5w/XJ8wzKzlpx3X+MToQCowKahftF1+KYnMWnuglCrVRojy1XlIWX8Frgp1v8INceGKpvDkbvMLJ4g==" + "version": "0.37.78", + "resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.37.78.tgz", + "integrity": "sha512-IJdyOPhq7r9Gw5/4X9u4vG8rX7+AwOtX7flUSQyQ1vAZzlnN452GGElUPmjQJIo8gB5VwMesbA9eMW+f0NMWVA==" }, "node_modules/dot-prop": { "version": "5.3.0", diff --git a/src/client/workerclient.ts b/src/client/workerclient.ts index 73b0416..5b52062 100644 --- a/src/client/workerclient.ts +++ b/src/client/workerclient.ts @@ -148,7 +148,7 @@ export class WorkerClient extends BaseClient { return; } - await shard.send({ + await shard.send(true, { ...data, } satisfies GatewaySendPayload); diff --git a/src/websocket/discord/shard.ts b/src/websocket/discord/shard.ts index 99b7559..2865352 100644 --- a/src/websocket/discord/shard.ts +++ b/src/websocket/discord/shard.ts @@ -97,7 +97,7 @@ export class Shard { }; } - async send(message: T) { + async send(force: boolean, message: T) { this.debugger?.info( `[Shard #${this.id}] Sending: ${GatewayOpcodes[message.op]} ${JSON.stringify( message.d, @@ -112,14 +112,14 @@ export class Shard { 1, )}`, ); - await this.checkOffline(); - await this.bucket.acquire(); - await this.checkOffline(); + await this.checkOffline(force); + await this.bucket.acquire(force); + await this.checkOffline(force); this.websocket?.send(JSON.stringify(message)); } async identify() { - await this.send({ + await this.send(true, { op: GatewayOpcodes.Identify, d: { token: `Bot ${this.options.token}`, @@ -137,7 +137,7 @@ export class Shard { } async resume() { - await this.send({ + await this.send(true, { op: GatewayOpcodes.Resume, d: { seq: this.data.resumeSeq!, @@ -306,9 +306,9 @@ export class Shard { return this.onpacket(JSON.parse(data as string)); } - checkOffline() { + checkOffline(force: boolean) { if (!this.isOpen) { - return new Promise(resolve => this.offlineSendQueue.push(resolve)); + return new Promise(resolve => this.offlineSendQueue[force ? 'unshift' : 'push'](resolve)); } return Promise.resolve(); } diff --git a/src/websocket/discord/sharder.ts b/src/websocket/discord/sharder.ts index 3933d5c..7d5f0ba 100644 --- a/src/websocket/discord/sharder.ts +++ b/src/websocket/discord/sharder.ts @@ -198,6 +198,6 @@ export class ShardManager extends Map { payload, } satisfies WatcherSendToShard); } - this.get(shardId)?.send(payload); + this.get(shardId)?.send(false, payload); } } diff --git a/src/websocket/structures/index.ts b/src/websocket/structures/index.ts index 8469b6e..ba4590d 100644 --- a/src/websocket/structures/index.ts +++ b/src/websocket/structures/index.ts @@ -66,9 +66,9 @@ export class DynamicBucket { this.processing = false; } - acquire() { + acquire(force = false) { return new Promise(res => { - this.queue.push(res); + this.queue[force ? 'unshift' : 'push'](res); void this.processQueue(); }); }