From 7fd7852e6ef58789825cc187b2710b1659e9a597 Mon Sep 17 00:00:00 2001 From: Lip Wee Yeo Amano <13805146+lwYeo@users.noreply.github.com> Date: Fri, 9 Dec 2022 00:12:16 +0800 Subject: [PATCH] Suggested fix for #13 Reconnection should also be attempted before OBS first load. --- src/index.ts | 45 +++++++++++++++++++++++++++++---------------- 1 file changed, 29 insertions(+), 16 deletions(-) diff --git a/src/index.ts b/src/index.ts index 397d9b1..f3c2a3a 100644 --- a/src/index.ts +++ b/src/index.ts @@ -65,7 +65,10 @@ const registerListeners = () => { obs.on("ExitStarted", () => { disconnect(); - init(); + (async () => { + await delay(1000); + init(); + })(); }) }; @@ -163,27 +166,37 @@ function disconnect() { } } - const init = async () => { console.log("Initializing"); - obs.disconnect(); - inputs = {}; - scenes = {}; - - try { - $MM.setSettingsStatus("status", "Connecting..."); - - await connect(); - registerListeners(); - await Promise.all([mapSources(), mapScenes()]); - $MM.setSettingsStatus("status", "Connected"); - } catch (err: any) { - console.warn("OBS error:", err); - $MM.setSettingsStatus("status", err.description || err.message || err); + let wsConnected = false; + while (!wsConnected) { + obs.disconnect(); + inputs = {}; + scenes = {}; + + try { + $MM.setSettingsStatus("status", "Connecting..."); + + await connect(); + registerListeners(); + await Promise.all([mapSources(), mapScenes()]); + + $MM.setSettingsStatus("status", "Connected"); + wsConnected = true; + } catch (err: any) { + console.warn("OBS error:", err); + $MM.setSettingsStatus("status", err.description || err.message || err); + + await delay(1000); + } } }; +const delay = (delayMs: number) => { + return new Promise(resolve => setTimeout(resolve, delayMs)); +} + $MM.onSettingsButtonPress("reconnect", init); init();