check for ws server every time
This commit is contained in:
+14
-6
@@ -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)
|
||||||
|
|||||||
Reference in New Issue
Block a user