turbo-net
Low level TCP library for Node.js
npm install turbo-net
Usage
const turbo =// Echo server that allocates constant memoryconst server = turboserver
Performance
Running the echo server examples in ./examples
I get the following throughput on my laptop
- echo-classic: 1.3GB/s at ~100MB of ram
- echo-turbo: 3.4GB/s at ~35MB of ram
API
server = turbo.createServer([options], [onsocket])
Create a new TCP server. Options include:
allowHalfOpen: false // set to true to allow half open TCP connections
server.on('connection', connection)
Emitted when a new connection is established.
server.on('listening')
Emitted when the server is listening.
server.connections
Unordered array containing the current active connections
server.listen(port, [address], [onlistening])
Listen on a port.
server.address()
Similar to net.Server.address. Useful if you are listening on port 0, to find out which port was picked.
server.close([onclose])
Close the server.
connection = turbo.connect(port, host, [options])
Connect to a TCP server. Options include:
allowHalfOpen: false // set to true to allow half open TCP connections
connection.on('connect')
Emitted when a client connection is fully connected.
connection.on('error', err)
Emitted when a client fails to connect.
connection.on('close')
Emitted a connection is fully closed. No other events will be emitted after.
connection.on('finish')
Emitted when the writable side is fully closed.
connection.on('end')
Emitted when the readable side is fully closed.
connection.close([callback])
Closes the connection.
connection.read(buffer, callback)
Read data from the connection. Data will be read into the buffer you pass.
The callback is called with callback(err, buffer, bytesRead)
.
If bytesRead
is 0
, then the readable side of the connection has ended.
connection.write(buffer, [length], [callback])
Write data to the connection. Optionally you specify how many bytes in the buffer you want to write.
The callback is called with callback(err, buffer, length)
.
connection.writev(buffers, [lengths], [callback])
Write more than one buffer at once. Optionally you can specify how many bytes in each buffer you want to write.
The callback is called with callback(err, buffers, lengths)
.
connection.end([callback])
End the writable side of the connection.
License
MIT