diff options
author | 2023-01-02 13:23:08 -0800 | |
---|---|---|
committer | 2023-01-02 13:23:08 -0800 | |
commit | 4eb9e8bb5aea4ae2ae1e5a2098ebb943de1b6280 (patch) | |
tree | 0b9479ddfab68ae3ca6f300bfacad377f96a16ee /bench/snippets | |
parent | 80c2da73ef59f0170f1c92551c948a1b285da17c (diff) | |
download | bun-4eb9e8bb5aea4ae2ae1e5a2098ebb943de1b6280.tar.gz bun-4eb9e8bb5aea4ae2ae1e5a2098ebb943de1b6280.tar.zst bun-4eb9e8bb5aea4ae2ae1e5a2098ebb943de1b6280.zip |
update node echo bench
Diffstat (limited to 'bench/snippets')
-rw-r--r-- | bench/snippets/tcp-echo.node.mjs | 68 |
1 files changed, 55 insertions, 13 deletions
diff --git a/bench/snippets/tcp-echo.node.mjs b/bench/snippets/tcp-echo.node.mjs index 3362b5a3c..a854787cf 100644 --- a/bench/snippets/tcp-echo.node.mjs +++ b/bench/snippets/tcp-echo.node.mjs @@ -29,22 +29,64 @@ const handlers = { }, }; -const server = net.createServer(function (socket) { - socket.data = { isServer: true }; - socket.on("connection", handlers.open.bind(socket)); - socket.on("data", handlers.data.bind(socket)); - socket.on("drain", handlers.drain.bind(socket)); - socket.setEncoding("binary"); -}); +if (net.createServer) { + const server = net.createServer(function (socket) { + socket.data = { isServer: true }; + socket.on("connection", handlers.open.bind(socket)); + socket.on("data", handlers.data.bind(socket)); + socket.on("drain", handlers.drain.bind(socket)); + socket.setEncoding("binary"); + }); -setInterval(() => { - console.log("Wrote", counter, "messages"); - counter = 0; -}, 1000); + setInterval(() => { + console.log("Wrote", counter, "messages"); + counter = 0; + }, 1000); -server.listen(8000); + server.listen(8000); +} else { + const handlers = { + open(socket) { + if (!socket.data?.isServer) { + if (!socket.write(msg)) { + socket.data = { pending: msg }; + } + } + }, + data(socket, buffer) { + if (!socket.write(buffer)) { + socket.data = { pending: buffer }; + return; + } + counter++; + }, + drain(socket) { + const pending = socket.data?.pending; + if (!pending) return; + if (socket.write(pending)) { + socket.data = undefined; + counter++; + return; + } + }, + }; + + setInterval(() => { + console.log("Wrote", counter, "messages"); + counter = 0; + }, 1000); + + const server = Bun.listen({ + socket: handlers, + hostname: "0.0.0.0", + port: 8000, + data: { + isServer: true, + }, + }); +} -const socket = net.connect({ host: "localhost", port: 8000 }, () => {}); +const socket = net.connect({ host: "0.0.0.0", port: 8000 }, () => {}); socket.on("connection", handlers.open.bind(socket)); socket.on("data", handlers.data.bind(socket)); socket.on("drain", handlers.drain.bind(socket)); |