From fe1f132be8b8cb81121daccf091a98dd0afcb447 Mon Sep 17 00:00:00 2001 From: Dan Castillo Date: Thu, 7 Nov 2024 05:47:54 -0500 Subject: [PATCH] docs: add example using proxy with fetch (#3800) * docs: add example using proxy with fetch * remove main function and use TLA --- docs/examples/proxy/fetch.mjs | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 docs/examples/proxy/fetch.mjs diff --git a/docs/examples/proxy/fetch.mjs b/docs/examples/proxy/fetch.mjs new file mode 100644 index 00000000000..56e37728a73 --- /dev/null +++ b/docs/examples/proxy/fetch.mjs @@ -0,0 +1,35 @@ +import * as http from 'node:http' +import { once } from 'node:events' +import { createProxy } from 'proxy' +import { ProxyAgent } from '../../../index.js' + +const proxyServer = createProxy(http.createServer()) +const server = http.createServer((req, res) => { + res.writeHead(200, { 'Content-Type': 'text/plain' }) + res.end('okay') +}) + +proxyServer.on('request', (req, res) => { + console.log(`Incoming request to ${req.url}`) +}) + +await once(proxyServer.listen(0), 'listening') +await once(server.listen(0), 'listening') + +const { port: proxyPort } = proxyServer.address() +const { port } = server.address() + +console.log(`Proxy listening on port ${proxyPort}`) +console.log(`Server listening on port ${port}`) +try { + // undici does a tunneling to the proxy server using CONNECT. + const agent = new ProxyAgent(`http://localhost:${proxyPort}`) + const response = await fetch(`http://localhost:${port}`, { + dispatcher: agent, + method: 'GET' + }) + const data = await response.text() + console.log('Response data:', data) +} catch (e) { + console.log(e) +}