fix(service-worker): optimize proxy handler initialization

Refactor the proxy_handler function to avoid redundant WASM runs and recursive calls. Now, WASM is initialized only if _portal_proxy is undefined, and if the proxy remains unavailable, the request is handled by a direct fetch instead of retrying the handler. This improves efficiency and prevents potential infinite loops.

lemon-mint committed Oct 31, 2025 at 12:41 UTC 5e3db8bef1412dc37e793ae071f2e97e5bd571fa
1 file changed +5 -4
cmd/webclient/service-worker.js
+5 -4
@@ -69,6 +69,10 @@ async function sleep(ms) {
69 }
70
71 async function proxy_handler(event) {
72 + if (!_portal_proxy) {
73 + await runWASM();
74 + }
75 +
76 console.log('Service Worker: Fetch event:', event.request);
77 if (typeof _portal_proxy != 'undefined') {
78 event.respondWith((async () => {
@@ -86,10 +90,7 @@ async function proxy_handler(event) {
90 }
91 console.log('Service Worker: _portal_proxy is not defined. Fetch event ignored.');
92
89 - _portal_proxy = undefined;
90 - await runWASM();
91 - await sleep(100);
92 - await proxy_handler(event);
93 + event.respondWith(fetch(event.request));
94 }
95
96 self.addEventListener('fetch', proxy_handler);