| '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); |
| }); |
| } |