diff --git a/benchmarks/websocket/server/echo.mjs b/benchmarks/websocket/server/echo.mjs index 3fe8f2ab8bd..1555546f4f4 100644 --- a/benchmarks/websocket/server/echo.mjs +++ b/benchmarks/websocket/server/echo.mjs @@ -1,10 +1,28 @@ +import cluster from 'node:cluster' import { WebSocketServer } from 'ws' +import { cpus } from 'node:os' -const server = new WebSocketServer({ port: 5001 }) +if (cluster.isPrimary) { + let cpu = cpus().length + while (cpu-- > 0) { + cluster.fork() + } +} else { + const server = new WebSocketServer({ + maxPayload: 600 * 1024 * 1024, + perMessageDeflate: false, + clientTracking: false, + port: 5001 + }) + + server.on('connection', (socket) => { + socket.on('message', (data, isBinary) => { + socket.send(data, { binary: isBinary }) + // socket.close(); + }) + }) -server.on('connection', (socket) => { - socket.on('message', (data, isBinary) => { - socket.send(data, { binary: isBinary }) - // socket.close(); + cluster.on('exit', () => { + server.close() }) -}) +} diff --git a/benchmarks/websocket/server/simple.mjs b/benchmarks/websocket/server/simple.mjs index de8a137cabb..8e439593509 100644 --- a/benchmarks/websocket/server/simple.mjs +++ b/benchmarks/websocket/server/simple.mjs @@ -1,13 +1,31 @@ +import cluster from 'node:cluster' import { WebSocketServer } from 'ws' +import { cpus } from 'node:os' -const server = new WebSocketServer({ port: 5001 }) +if (cluster.isPrimary) { + let cpu = cpus().length + while (cpu-- > 0) { + cluster.fork() + } +} else { + const server = new WebSocketServer({ + maxPayload: 600 * 1024 * 1024, + perMessageDeflate: false, + clientTracking: false, + port: 5001 + }) + + // Workaround for https://github.com/nodejs/undici/issues/3202 + const emptyBuffer = Buffer.allocUnsafe(1) -// Workaround for https://github.com/nodejs/undici/issues/3202 -const emptyBuffer = Buffer.allocUnsafe(1) + server.on('connection', (socket) => { + socket.on('message', (_data, _isBinary) => { + socket.send(emptyBuffer) + // socket.close(); + }) + }) -server.on('connection', (socket) => { - socket.on('message', (_data, _isBinary) => { - socket.send(emptyBuffer) - // socket.close(); + cluster.on('exit', () => { + server.close() }) -}) +} diff --git a/benchmarks/websocket/websocket-echo.mjs b/benchmarks/websocket/websocket-echo.mjs index 03395c73a0a..d30fc0f0124 100644 --- a/benchmarks/websocket/websocket-echo.mjs +++ b/benchmarks/websocket/websocket-echo.mjs @@ -1,3 +1,7 @@ +// --------------------SERVER-------------------- +// -> /server/echo.mjs +// ---------------------------------------------- + import { WebSocket as WsWebSocket } from 'ws' import { WebSocket as UndiciWebSocket } from '../../index.js' import { randomBytes } from 'node:crypto' diff --git a/benchmarks/websocket/websocket-open-connection.mjs b/benchmarks/websocket/websocket-open-connection.mjs index 378ebdfac9e..e7b43f95b9a 100644 --- a/benchmarks/websocket/websocket-open-connection.mjs +++ b/benchmarks/websocket/websocket-open-connection.mjs @@ -1,3 +1,7 @@ +// --------------------SERVER-------------------- +// -> /server/simple.mjs +// ---------------------------------------------- + import { WebSocket as WsWebSocket } from 'ws' import { WebSocket as UndiciWebSocket } from '../../index.js' import { bench, run, group } from 'mitata' @@ -15,7 +19,6 @@ const url = 'http://localhost:5001' group('open connection', () => { bench('ws', () => { const ws = new WsWebSocket(url) - ws.binaryType = 'fragments' return new Promise((resolve, reject) => { ws.addEventListener('open', () => { resolve() diff --git a/benchmarks/websocket/websocket-send-buffer.mjs b/benchmarks/websocket/websocket-send-buffer.mjs index 6a708b88fff..60c71e56db0 100644 --- a/benchmarks/websocket/websocket-send-buffer.mjs +++ b/benchmarks/websocket/websocket-send-buffer.mjs @@ -1,3 +1,7 @@ +// --------------------SERVER-------------------- +// -> /server/simple.mjs +// ---------------------------------------------- + import { WebSocket as WsWebSocket } from 'ws' import { WebSocket as UndiciWebSocket } from '../../index.js' import { randomBytes } from 'node:crypto' diff --git a/benchmarks/websocket/websocket-send-string.mjs b/benchmarks/websocket/websocket-send-string.mjs index 4a1377eefce..b17e342ebdf 100644 --- a/benchmarks/websocket/websocket-send-string.mjs +++ b/benchmarks/websocket/websocket-send-string.mjs @@ -1,3 +1,7 @@ +// --------------------SERVER-------------------- +// -> /server/simple.mjs +// ---------------------------------------------- + import { WebSocket as WsWebSocket } from 'ws' import { WebSocket as UndiciWebSocket } from '../../index.js' import { randomBytes } from 'node:crypto'