fix(WebSocketManager): available sessions check (#9823)

Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com>
This commit is contained in:
DD
2023-09-10 15:42:38 +03:00
committed by GitHub
parent 6404c013e7
commit e68ab167c2

View File

@@ -293,18 +293,20 @@ export class WebSocketManager extends AsyncEventEmitter<ManagerShardEventsMap> {
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();
}