$ gnpm install turbo-http
A low level http library for Node.js based on turbo-net
npm i turbo-http
WIP, this module is already really fast but there are some HTTP features missing and easy performance gains to be had. :D :D :D
On my laptop I can serve simple hello world payloads at around 100k requests/seconds compared to 10k requests/second using node core.
const turbo = require('turbo-http')
const server = turbo.createServer(function (req, res) {
  res.setHeader('Content-Length', '11')
  res.write(Buffer.from('hello world'))
})
server.listen(8080)
server = turbo.createServer([onrequest])Create a new http server. Inherits from the turbo-net tcp server
server.on('request', req, res)Emitted when a new http request is received.
res.statusCode = codeSet the http status
res.setHeader(name, value)Set a http header
res.write(buf, [length], [callback])Write a buffer. When the callback is called, the buffer has been completely flushed to the underlying socket and is safe to reuse for other purposes
res.writev(buffers, [lengths], [callback])Write more that one buffer at once.
res.end([buf], [length], [callback])End the request. Only needed if you do not provide a Content-Length.
req.urlRequest url
req.methodRequest method
req.socketRequest turbo-net socket
value = req.getHeader(name)Get a request header.
headers = req.getAllHeaders()Get all request headers as a map.
req.ondata(buffer, start, length)Called when there is data read. If you use the buffer outside of this function you should copy it.
req.onend()Called when the request is fully read.
Comparing turbo-http to other frameworks is like comparing oranges to apples.
turbo-http could be thought of as a replacement of Node's native http module, while all available frameworks actually use it.
Benchmark it:
clone this repo,npm inpm run benchBenchmark averages are taken after one warm-up round.
| Requests/s | Latency | Throughput/Mb | |
|---|---|---|---|
| turbo-http.js | 32592 | 3.03 | 2.43 | 
| bare-node.js | 18396 | 5.32 | 1.98 | 
| rayo.js | 16249.6 | 6.03 | 1.77 | 
| polka.js | 15802.4 | 6.2 | 1.71 | 
| fastify.js | 15141.6 | 6.47 | 2.26 | 
| express.js | 13408.8 | 7.31 | 1.46 | 
| hapi.js | 9675.6 | 10.15 | 1.42 | 
Note: Nevermind these numbers, this benchmark was run on a slow computer and the above table is for illustrative purposes only.
Optionally, you may also define your test's parameters:
$> npm run bench -- -u http://localhost:5050 -c 100 -p 10 -d 5
-u (url) -Defaults to http://localhost:5050-c (connections) -Defaults to 100-p (pipelines) -Defaults to 10-d (duration) -Defaults to 5 (seconds)This project was kindly sponsored by nearForm.
MIT
Copyright 2013 - present © cnpmjs.org | Home |