vscode-cdp-proxy/demo.js

50 строки
1.7 KiB
JavaScript

/*---------------------------------------------------------
* Copyright (C) Microsoft Corporation. All rights reserved.
*--------------------------------------------------------*/
// A simple demo proxy that just logs traffic going back and forth.
const { Connection, Server, WebSocketTransport } = require('./');
(async () => {
const server = await Server.create({ port: 8999});
server.onConnection(async ([toDebugger, req]) => {
console.log('Got connection from debugger');
toDebugger.onError(err => console.error('Error on debugger transport', err));
toDebugger.pause(); // don't listen for events until the target is ready
const url = new URL('http://localhost' + req.url);
const browserInspectUri = url.searchParams.get('browser');
const toTarget = new Connection(await WebSocketTransport.create(browserInspectUri));
console.log('Connected to target');
toTarget.onError(err => console.error('Error on target transport', err));
// Copy commands (requests) from one pipe to the other.
toTarget.onCommand(evt => {
console.log(`target -> debugger`, evt);
toDebugger.send(evt);
});
toDebugger.onCommand(evt => {
console.log(`debugger -> target`, evt);
toTarget.send(evt);
});
// Copy replies (responses) the same way
toTarget.onReply(evt => {
console.log(`target -> debugger`, evt);
toDebugger.send(evt);
});
toDebugger.onReply(evt => {
console.log(`debugger -> target`, evt);
toTarget.send(evt);
});
// // dequeue any messages we got in the meantime
toDebugger.unpause();
});
console.log('Server listening on port', server.address.port)
})();