MCPcopy
hub / github.com/DO-SAY-GO/dn / connect

Function connect

src/protocol.js:16–193  ·  view source on GitHub ↗
({port:port = 9222} = {})

Source from the content-addressed store, hash-verified

14][Math.floor(Math.random()*6)];
15
16export async function connect({port:port = 9222} = {}) {
17 let webSocketDebuggerUrl, socket;
18 let url;
19 try {
20 await untilTrue(async () => {
21 let result = false;
22 try {
23 url = `http://${RANDOM_LOCAL()}:${port}/json/version`;
24 DEBUG.verbose && console.log(`Trying browser at ${url}...`, url);
25 const {webSocketDebuggerUrl} = await Promise.race([
26 fetch(url).then(r => r.json()),
27 (async () => {
28 await sleep(2500);
29 throw new Error(`Connect took too long.`)
30 })(),
31 ]);
32 if ( webSocketDebuggerUrl ) {
33 result = true;
34 }
35 } catch(e) {
36 DEBUG.verbose && console.error('Error while checking browser', e);
37 } finally {
38 return result;
39 }
40 });
41 ({webSocketDebuggerUrl} = await fetch(url).then(r => r.json()));
42 let isOpen = false;
43 socket = new Ws(webSocketDebuggerUrl);
44 socket.on('open', () => { isOpen = true });
45 await untilTrue(() => isOpen);
46 DEBUG.verbose && console.log(`Connected to browser`);
47 } catch(e) {
48 console.log("Error communicating with browser", e);
49 process.exit(1);
50 }
51
52 const Resolvers = {};
53 const Handlers = {};
54 socket.on('message', handle);
55 let id = 0;
56
57 let resolve, reject;
58 const promise = new Promise((res, rej) => (resolve = res, reject = rej));
59
60 switch(socket.readyState) {
61 case Ws.CONNECTING:
62 socket.on('open', () => resolve()); break;
63 case Ws.OPEN:
64 resolve(); break;
65 case Ws.CLOSED:
66 case Ws.CLOSING:
67 reject(); break;
68 }
69
70 await promise;
71
72 return {
73 send,

Callers 1

collectFunction · 0.90

Calls 3

untilTrueFunction · 0.90
sleepFunction · 0.90
RANDOM_LOCALFunction · 0.85

Tested by

no test coverage detected