From 7725c48fb710bf477e6645d1e530513e117184cd Mon Sep 17 00:00:00 2001
From: Yummy-Yums <77977520+Yummy-Yums@users.noreply.github.com>
Date: Fri, 1 Mar 2024 00:21:35 +0000
Subject: [PATCH] Reconnection Logic (#2743)

* reconnection logic

* prettier state.js

---------

Co-authored-by: Masen Furer <m_github@0x26.net>
---
 reflex/.templates/web/utils/state.js | 13 +++++++++++++
 1 file changed, 13 insertions(+)

diff --git a/reflex/.templates/web/utils/state.js b/reflex/.templates/web/utils/state.js
index f0051e582..51e8c6b8d 100644
--- a/reflex/.templates/web/utils/state.js
+++ b/reflex/.templates/web/utils/state.js
@@ -325,6 +325,17 @@ export const connect = async (
     autoUnref: false,
   });
 
+  function checkVisibility() {
+    if (document.visibilityState === "visible") {
+      if (!socket.current.connected) {
+        console.log("Socket is disconnected, attempting to reconnect ");
+        socket.current.connect();
+      } else {
+        console.log("Socket is reconnected ");
+      }
+    }
+  }
+
   // Once the socket is open, hydrate the page.
   socket.current.on("connect", () => {
     setConnectErrors([]);
@@ -345,6 +356,8 @@ export const connect = async (
       queueEvents(update.events, socket);
     }
   });
+
+  document.addEventListener("visibilitychange", checkVisibility);
 };
 
 /**