summary refs log tree commit diff
path: root/webrtc/src/util/Heartbeat.ts
diff options
context:
space:
mode:
Diffstat (limited to 'webrtc/src/util/Heartbeat.ts')
-rw-r--r--webrtc/src/util/Heartbeat.ts23
1 files changed, 23 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