From 429d0b1f2463fa25e046e9b29487213a7ecfd0f8 Mon Sep 17 00:00:00 2001 From: nick-delirium Date: Mon, 18 Dec 2023 11:25:30 +0100 Subject: [PATCH] feat(tracker): exponential reconnections for assist --- tracker/tracker-assist/src/Assist.ts | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/tracker/tracker-assist/src/Assist.ts b/tracker/tracker-assist/src/Assist.ts index 8b6ca571f..b095f004f 100644 --- a/tracker/tracker-assist/src/Assist.ts +++ b/tracker/tracker-assist/src/Assist.ts @@ -211,6 +211,11 @@ export default class Assist { }, transports: ['websocket',], withCredentials: true, + reconnection: true, + reconnectionAttempts: 30, + reconnectionDelay: 1000, + reconnectionDelayMax: 25000, + randomizationFactor: 0.5, }) socket.onAny((...args) => { if (args[0] === 'messages' || args[0] === 'UPDATE_SESSION') { @@ -423,10 +428,17 @@ export default class Assist { const peer = new safeCastedPeer(peerID, peerOptions) as Peer this.peer = peer - + let peerReconnectAttempts = 0 // @ts-ignore (peerjs typing) peer.on('error', e => app.debug.warn('Peer error: ', e.type, e)) - peer.on('disconnected', () => peer.reconnect()) + peer.on('disconnected', () => { + if (peerReconnectAttempts < 30) { + setTimeout(() => { + peer.reconnect() + }, Math.min(peerReconnectAttempts, 8) * 2 * 1000) + peerReconnectAttempts += 1 + } + }) function updateCallerNames() { callUI?.setAssistentName(callingAgents)