'use strict'; const common = require('../common.js'); const net = require('net'); const bench = common.createBenchmark(main, { n: [5, 1000] }); const reqData = 'GET / HTTP/1.1\r\n' + 'Upgrade: WebSocket\r\n' + 'Connection: Upgrade\r\n' + '\r\n' + 'WjN}|M(6'; const resData = 'HTTP/1.1 101 Web Socket Protocol Handshake\r\n' + 'Upgrade: WebSocket\r\n' + 'Connection: Upgrade\r\n' + '\r\n\r\n'; function main({ n }) { const server = require('../fixtures/simple-http-server.js') .listen(common.PORT) .on('listening', () => { bench.start(); doBench(server.address(), n, () => { bench.end(n); server.close(); }); }) .on('upgrade', (req, socket, upgradeHead) => { socket.resume(); socket.write(resData); socket.end(); }); } function doBench(address, count, done) { if (count === 0) { done(); return; } const conn = net.createConnection(address.port); conn.write(reqData); conn.resume(); conn.on('end', () => { doBench(address, count - 1, done); }); }