From e68ab167c2c85c9fd90fc7c3798ec3bfd2d89760 Mon Sep 17 00:00:00 2001 From: DD Date: Sun, 10 Sep 2023 15:42:38 +0300 Subject: [PATCH] fix(WebSocketManager): available sessions check (#9823) Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com> --- packages/ws/src/ws/WebSocketManager.ts | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/packages/ws/src/ws/WebSocketManager.ts b/packages/ws/src/ws/WebSocketManager.ts index 19996c396..5627b854b 100644 --- a/packages/ws/src/ws/WebSocketManager.ts +++ b/packages/ws/src/ws/WebSocketManager.ts @@ -293,18 +293,20 @@ export class WebSocketManager extends AsyncEventEmitter { public async connect() { const shardCount = await this.getShardCount(); + // Spawn shards and adjust internal state + await this.updateShardCount(shardCount); + const shardIds = await this.getShardIds(); const data = await this.fetchGatewayInformation(); - if (data.session_start_limit.remaining < shardCount) { + + if (data.session_start_limit.remaining < shardIds.length) { throw new Error( - `Not enough sessions remaining to spawn ${shardCount} shards; only ${ + `Not enough sessions remaining to spawn ${shardIds.length} shards; only ${ data.session_start_limit.remaining } remaining; resets at ${new Date(Date.now() + data.session_start_limit.reset_after).toISOString()}`, ); } - // First, make sure all our shards are spawned - await this.updateShardCount(shardCount); await this.strategy.connect(); }