From f2827363d7a460b63f05b14dd6969824466e196c Mon Sep 17 00:00:00 2001 From: hypermc Date: Fri, 6 Jun 2025 19:47:47 -0400 Subject: [PATCH] Remove Force Close to fix WebSockets --- worker-server.js | 22 +++------------------- 1 file changed, 3 insertions(+), 19 deletions(-) diff --git a/worker-server.js b/worker-server.js index 26b4151..aa30202 100644 --- a/worker-server.js +++ b/worker-server.js @@ -12,7 +12,7 @@ const CONFIG = { PORT: 8081, WORKER_MULTIPLIER: 4, PROXY_TIMEOUT: 360000, // 6 minutes - TUNNEL_TIMEOUT: 20000, // Reduced to 20 seconds for faster socket cleanup + TUNNEL_TIMEOUT: 20000, // 20 seconds for socket timeout DEBUG: false, // Keep enabled for diagnostics CONINFO: false, MAX_SOCKETS: 500, @@ -21,7 +21,7 @@ const CONFIG = { PORT_RANGE_END: 20000, CONNECT_RETRY_MS: 100, MAX_CONNECT_RETRIES: 3, - TUNNEL_FORCE_CLOSE_MS: 10000, // Reduced to 10 seconds for faster cleanup + TUNNEL_FORCE_CLOSE_MS: 10000, // Not used anymore }; // Shared HTTP agent @@ -91,23 +91,15 @@ if (cluster.isMaster) { activeTunnels.set(tunnelServer, { id: tunnelId, port, created: Date.now() }); if (CONFIG.DEBUG) console.log(`Created ${tunnelId}, active tunnels: ${activeTunnels.size}`); - const forceCloseTimeout = setTimeout(() => { - // console.warn(`Force closing ${tunnelId} after ${CONFIG.TUNNEL_FORCE_CLOSE_MS}ms`); - closeTunnel(tunnelServer); - }, CONFIG.TUNNEL_FORCE_CLOSE_MS); - await proxyWithRetry(req, res, port, proxy, () => { - clearTimeout(forceCloseTimeout); closeTunnel(tunnelServer); }); res.on('finish', () => { - clearTimeout(forceCloseTimeout); closeTunnel(tunnelServer); }); res.on('error', (err) => { if (CONFIG.DEBUG) console.error(`Response error for ${tunnelId}:`, err.message); - clearTimeout(forceCloseTimeout); closeTunnel(tunnelServer); }); } catch (e) { @@ -145,23 +137,15 @@ if (cluster.isMaster) { activeTunnels.set(tunnelServer, { id: tunnelId, port, created: Date.now() }); if (CONFIG.DEBUG) console.log(`Created ${tunnelId}, active tunnels: ${activeTunnels.size}`); - const forceCloseTimeout = setTimeout(() => { - console.warn(`Force closing ${tunnelId} after ${CONFIG.TUNNEL_FORCE_CLOSE_MS}ms`); - closeTunnel(tunnelServer); - }, CONFIG.TUNNEL_FORCE_CLOSE_MS); - await proxyWsWithRetry(req, socket, head, port, proxy, () => { - clearTimeout(forceCloseTimeout); closeTunnel(tunnelServer); }); socket.on('close', () => { - clearTimeout(forceCloseTimeout); closeTunnel(tunnelServer); }); socket.on('error', (err) => { if (CONFIG.DEBUG) console.error(`WebSocket error for ${tunnelId}:`, err.message); - clearTimeout(forceCloseTimeout); closeTunnel(tunnelServer); }); } catch (e) { @@ -194,7 +178,7 @@ if (cluster.isMaster) { }); } } - }, 5000); // Reduced to 5 seconds for faster feedback + }, 5000); // 5 seconds for feedback } };