bloxycrats
v1.1.0
Published
Converts a duplex stream to block stream
Downloads
191
Readme
Bloxycrats
This module transforms a duplex stream (e.g. TCP or TLS stream) into a block-oriented interface. The API has been inspired by Node's dgram
API but is not 100% compatible.
Example
Server:
const net = require('net');
const Bloxy = require('bloxycrats');
net.createServer((socket) => {
const connection = new Bloxy(socket);
connection.send(Buffer.from('Hello world!'));
}).listen(1337);
Client:
const net = require('net');
const Bloxy = require('bloxycrats');
const connection = new Bloxy(net.connect({port: 1337}));
connection.on('message', (msg) => console.log(msg.toString()));
This may seem trivial. But Bloxycrats ensures that "Hello World" is always transferred in one block. It never happens that it gets split up into "Hello W" and "orld".
API
const Bloxy = require('bloxycrats');
const connection = new Bloxy(stream);
Convert the duplex stream stream
into the block-oriented interface connection
.
Method: send
connection.send(block).then(() => {...});
Sends block
to the other side. The returned Promise resolves once all data is flushed. Please note: Back-pressure is not handled by this method. So please wait for the data to be flushed before sending the next block.
block
is an instance of Buffer or an Array of Buffer that is concatenated before it goes on the wire.
Method: close
connection.close().then(() => {...});
Destroys the underlaying stream and resolved once the close event is fired or if the stream is already destroyed.
Event: message
connection.on('message', (block) => {...});
This event is raised, once a complete buffer has been received.
Events: close, end, error
connection.on('close', () => {...});
connection.on('end', () => {...});
connection.on('error', (err) => {...});
These events are forwarded from the underlaying stream.