spacebar/webrtc/src/util/Heartbeat.ts
2022-03-07 19:15:33 +11:00

23 lines
591 B
TypeScript

import { WebSocket, CLOSECODES } from "@fosscord/gateway";
import { VoiceOPCodes } from "@fosscord/util";
export async function setHeartbeat(socket: WebSocket, nonce?: Number) {
if (socket.heartbeatTimeout) clearTimeout(socket.heartbeatTimeout);
socket.heartbeatTimeout = setTimeout(() => {
return socket.close(CLOSECODES.Session_timed_out);
}, 1000 * 45);
if (!nonce) {
socket.send(JSON.stringify({
op: VoiceOPCodes.HELLO,
d: {
v: 5,
heartbeat_interval: 13750,
}
}));
}
else {
socket.send(JSON.stringify({ op: VoiceOPCodes.HEARTBEAT_ACK, d: nonce }));
}
}