Procházet zdrojové kódy

Reconnect websocket on window focus (#366)

advo-kat před 2 roky
rodič
revize
0056d94d57
1 změnil soubory, kde provedl 8 přidání a 2 odebrání
  1. 8 2
      pynecone/compiler/templates.py

+ 8 - 2
pynecone/compiler/templates.py

@@ -164,8 +164,14 @@ USE_EFFECT = join(
         "  if(!isReady) {{",
         "  if(!isReady) {{",
         "    return;",
         "    return;",
         "  }}",
         "  }}",
-        f"  if (!{SOCKET}.current) {{{{",
-        f"    connect({SOCKET}, {{state}}, {{set_state}}, {RESULT}, {SET_RESULT}, {ROUTER}, {EVENT_ENDPOINT})",
+        "  const reconnectSocket = () => {{",
+        f"    {SOCKET}.current.reconnect()",
+        "  }}",
+        f"  if (typeof {SOCKET}.current !== 'undefined') {{{{",
+        f"    if (!{SOCKET}.current) {{{{",
+        f"      window.addEventListener('focus', reconnectSocket)",
+        f"      connect({SOCKET}, {{state}}, {{set_state}}, {RESULT}, {SET_RESULT}, {ROUTER}, {EVENT_ENDPOINT})",
+        "    }}",
         "  }}",
         "  }}",
         "  const update = async () => {{",
         "  const update = async () => {{",
         f"    if ({RESULT}.{STATE} != null) {{{{",
         f"    if ({RESULT}.{STATE} != null) {{{{",