-
Notifications
You must be signed in to change notification settings - Fork 164
Expand file tree
/
Copy pathrequest_finished.js
More file actions
46 lines (39 loc) · 1.47 KB
/
request_finished.js
File metadata and controls
46 lines (39 loc) · 1.47 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
const { Server } = require('proxy-chain');
const http = require('http');
const request = require('request');
(async () => {
// Create a target server
const targetServer = http.createServer((req, res) => {
res.writeHead(200, { 'Content-Type': 'text/plain' });
res.end('Hello World!');
});
await new Promise((resolve) => targetServer.listen(0, resolve));
const targetPort = targetServer.address().port;
// Create a proxy server
const server = new Server({
port: 0,
verbose: true,
});
server.on('requestFinished', ({ id, connectionId, request }) => {
console.log(`Request finished: { id: ${id}, connectionId: ${connectionId}, method: ${request.method}, url: ${request.url} }`);
});
await server.listen();
const proxyPort = server.port;
console.log(`Proxy server listening on port ${proxyPort}`);
console.log(`Target server listening on port ${targetPort}`);
// Make a request through the proxy
await new Promise((resolve, reject) => {
request({
url: `http://127.0.0.1:${targetPort}`,
proxy: `http://127.0.0.1:${proxyPort}`,
}, (error, response, body) => {
if (error) return reject(error);
console.log(`Response body: ${body}`);
resolve();
});
});
// Close servers
await server.close(true);
await new Promise((resolve) => targetServer.close(resolve));
console.log('Servers closed.');
})();