From 81a8367dacfe0f0a647453cf631474d7f9e55bae Mon Sep 17 00:00:00 2001 From: rafael-aero Date: Thu, 26 Aug 2021 10:19:24 +0200 Subject: [PATCH] improve reconnect logic --- ElectronNET.API/BridgeConnector.cs | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/ElectronNET.API/BridgeConnector.cs b/ElectronNET.API/BridgeConnector.cs index 80c64b4..b5cc164 100644 --- a/ElectronNET.API/BridgeConnector.cs +++ b/ElectronNET.API/BridgeConnector.cs @@ -377,18 +377,27 @@ namespace ElectronNET.API Log("ElectronNET socket disconnected with reason {0}, trying to reconnect on port {1}!", reason, BridgeSettings.SocketPort); int i = 0; + + double miliseconds = 500; + while (true) { - var seconds = Math.Pow(2, i); - await Task.Delay(TimeSpan.FromSeconds(seconds)); try { - await socket.ConnectAsync(); + if (!socket.Connected) + { + await socket.ConnectAsync(); + } + return; } catch (Exception e) { - LogError(e, "Failed to reconnect, will try again. Attempt {0}", i); + LogError(e, "Failed to reconnect, will try again in {0} ms.", miliseconds * 2); } + + await Task.Delay(TimeSpan.FromMilliseconds(miliseconds)); + + miliseconds = Math.Min(60_000, Math.Pow(2, i) + 500); i++; } };