check for ws server every time

This commit is contained in:
Tommy D. Rossi
2025-11-24 19:00:14 +01:00
parent a4eaffd25a
commit b6ecd3b3d9
+14 -6
View File
@@ -83,7 +83,9 @@ const NO_TABS_ERROR = `No browser tabs are connected. Please install and enable
async function isPortTaken(port: number): Promise<boolean> { async function isPortTaken(port: number): Promise<boolean> {
try { try {
const response = await fetch(`http://localhost:${port}/`) const response = await fetch(`http://localhost:${port}/`, {
signal: AbortSignal.timeout(500)
})
return response.ok return response.ok
} catch { } catch {
return false return false
@@ -94,11 +96,10 @@ async function ensureRelayServer(): Promise<void> {
const portTaken = await isPortTaken(RELAY_PORT) const portTaken = await isPortTaken(RELAY_PORT)
if (portTaken) { if (portTaken) {
console.error('CDP relay server already running')
return return
} }
console.error('Starting CDP relay server...') console.error('CDP relay server not running, starting it...')
const scriptPath = require.resolve('../dist/start-relay-server.js') const scriptPath = require.resolve('../dist/start-relay-server.js')
@@ -109,10 +110,16 @@ async function ensureRelayServer(): Promise<void> {
serverProcess.unref() serverProcess.unref()
// wait for extension to connect for (let i = 0; i < 10; i++) {
await new Promise((resolve) => setTimeout(resolve, 1000)) await new Promise((resolve) => setTimeout(resolve, 500))
const isRunning = await isPortTaken(RELAY_PORT)
if (isRunning) {
console.error('CDP relay server started successfully')
return
}
}
console.error('CDP relay server started') throw new Error('Failed to start CDP relay server after 5 seconds')
} }
async function ensureConnection(): Promise<{ browser: Browser; page: Page }> { async function ensureConnection(): Promise<{ browser: Browser; page: Page }> {
@@ -305,6 +312,7 @@ server.tool(
timeout: z.number().default(5000).describe('Timeout in milliseconds for code execution (default: 5000ms)'), timeout: z.number().default(5000).describe('Timeout in milliseconds for code execution (default: 5000ms)'),
}, },
async ({ code, timeout }) => { async ({ code, timeout }) => {
await ensureRelayServer()
await ensureConnection() await ensureConnection()
const page = await getCurrentPage(timeout) const page = await getCurrentPage(timeout)