2 files changed, 24 insertions, 0 deletions
diff --git a/webrtc/src/util/Heartbeat.ts b/webrtc/src/util/Heartbeat.ts
new file mode 100644
index 00000000..8c5e3a7a
--- /dev/null
+++ b/webrtc/src/util/Heartbeat.ts
@@ -0,0 +1,23 @@
+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 }));
+ }
+}
\ No newline at end of file
diff --git a/webrtc/src/util/index.ts b/webrtc/src/util/index.ts
new file mode 100644
index 00000000..e8557452
--- /dev/null
+++ b/webrtc/src/util/index.ts
@@ -0,0 +1 @@
+export * from "./Heartbeat"
\ No newline at end of file
|