diff options
Diffstat (limited to 'tools/deno_tcp_proxy.ts')
-rw-r--r-- | tools/deno_tcp_proxy.ts | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/tools/deno_tcp_proxy.ts b/tools/deno_tcp_proxy.ts new file mode 100644 index 000000000..96877fa20 --- /dev/null +++ b/tools/deno_tcp_proxy.ts @@ -0,0 +1,29 @@ +// Used for benchmarking Deno's tcp proxy perfromance. See tools/http_benchmark.py +const addr = Deno.args[1] || "127.0.0.1:4500"; +const originAddr = Deno.args[2] || "127.0.0.1:4501"; + +const listener = Deno.listen("tcp", addr); + +async function handle(conn: Deno.Conn): Promise<void> { + const origin = await Deno.dial("tcp", originAddr); + try { + await Promise.all([Deno.copy(conn, origin), Deno.copy(origin, conn)]); + } catch (err) { + if (err.message !== "read error" && err.message !== "write error") { + throw err; + } + } finally { + conn.close(); + origin.close(); + } +} + +async function main(): Promise<void> { + console.log("Listening on", addr); + while (true) { + const conn = await listener.accept(); + handle(conn); + } +} + +main(); |