From 75d458b27ca19f294d5fb08083ceb5dd4e7902dc Mon Sep 17 00:00:00 2001 From: "Tommy D. Rossi" Date: Fri, 14 Nov 2025 11:44:02 +0100 Subject: [PATCH] _waitForServer --- extension-playwright/src/background.ts | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/extension-playwright/src/background.ts b/extension-playwright/src/background.ts index 681153b..fa6b238 100644 --- a/extension-playwright/src/background.ts +++ b/extension-playwright/src/background.ts @@ -44,6 +44,30 @@ class SimplifiedExtension { } } + private async _waitForServer(): Promise { + const httpUrl = 'http://localhost:9988'; + + while (true) { + try { + debugLog('Checking if relay server is available...'); + await fetch(httpUrl, { method: 'HEAD' }); + debugLog('Server is available, connecting WebSocket...'); + + const socket = new WebSocket(RELAY_URL); + await new Promise((resolve, reject) => { + socket.onopen = () => resolve(); + socket.onerror = (e) => reject(e); + setTimeout(() => reject(new Error('Connection timeout')), 2000); + }); + debugLog('Connected to relay server'); + return socket; + } catch (error: any) { + debugLog(`Server not available, retrying in 1 second...`); + await new Promise(resolve => setTimeout(resolve, 1000)); + } + } + } + private async _connect(tabId: number): Promise { try { debugLog(`Connecting to tab ${tabId}`); @@ -57,6 +81,7 @@ class SimplifiedExtension { // Update icon to show connecting state await this._updateIcon(tabId, 'connecting'); + await this._waitForServer() // Connect to WebSocket relay const socket = new WebSocket(RELAY_URL); await new Promise((resolve, reject) => {