From 9608934320fedc4a33553d0813b7ff85738ff6a4 Mon Sep 17 00:00:00 2001 From: gearnode Date: Fri, 31 Jan 2025 21:14:53 -0800 Subject: [PATCH] Fix too many SSE conn open in dev mode Signed-off-by: gearnode --- apps/console/scripts/esbuild.mjs | 39 +++++++++++++++++--------------- 1 file changed, 21 insertions(+), 18 deletions(-) diff --git a/apps/console/scripts/esbuild.mjs b/apps/console/scripts/esbuild.mjs index 93699a94c..15448b71d 100644 --- a/apps/console/scripts/esbuild.mjs +++ b/apps/console/scripts/esbuild.mjs @@ -61,26 +61,29 @@ const hotReloading = { build.initialOptions.banner = build.initialOptions.banner || {}; build.initialOptions.banner.js = ` ${build.initialOptions.banner.js || ""}; - - new EventSource('/esbuild').addEventListener('change', e => { - const { added, removed, updated } = JSON.parse(e.data); - - if (!added.length && !removed.length && updated.length === 1) { - for (const link of document.getElementsByTagName("link")) { - const url = new URL(link.href); - - if (url.host === location.host && url.pathname === updated[0]) { - const next = link.cloneNode(); - next.href = updated[0] + '?' + Math.random().toString(36).slice(2); - next.onload = () => link.remove(); - link.parentNode.insertBefore(next, link.nextSibling); - return; + + if (!window.__esbuild_event_source__) { + window.__esbuild_event_source__ = true; + new EventSource('/esbuild').addEventListener('change', (e) => { + const { added, removed, updated } = JSON.parse(e.data); + + if (!added.length && !removed.length && updated.length === 1) { + for (const link of document.getElementsByTagName("link")) { + const url = new URL(link.href); + + if (url.host === location.host && url.pathname === updated[0]) { + const next = link.cloneNode(); + next.href = updated[0] + '?' + Math.random().toString(36).slice(2); + next.onload = () => link.remove(); + link.parentNode.insertBefore(next, link.nextSibling); + return; + } } } - } - - location.reload(); - }); + + location.reload(); + }); + } `; return; },