Files
discordeno/src/ws/identify.ts
T
Skillz4Killz 2babaf5991 deno fmt
2021-04-08 14:35:33 +00:00

49 lines
1.1 KiB
TypeScript

import { DiscordGatewayOpcodes } from "../types/codes/gateway_opcodes.ts";
import { ws } from "./ws.ts";
export async function identify(shardId: number, maxShards: number) {
ws.log("IDENTIFYING", { shardId, maxShards });
// CREATE A SHARD
const socket = await ws.createShard(shardId);
// Identify can just set/reset the settings for the shard
ws.shards.set(shardId, {
id: shardId,
ws: socket,
resumeInterval: 0,
sessionId: "",
previousSequenceNumber: 0,
resuming: false,
unavailableGuildIds: new Set(),
heartbeat: {
lastSentAt: 0,
lastReceivedAt: 0,
acknowledged: false,
keepAlive: false,
interval: 0,
intervalId: 0,
},
});
socket.onopen = () => {
socket.send(
JSON.stringify({
op: DiscordGatewayOpcodes.Identify,
d: { ...ws.identifyPayload, shard: [shardId, maxShards] },
}),
);
};
return new Promise((resolve, reject) => {
ws.loadingShards.set(shardId, {
shardId,
resolve,
reject,
startedAt: Date.now(),
});
ws.cleanupLoadingShards();
});
}