quickpeer
v0.0.5
Published
A simple p2p peering library.
Downloads
6
Maintainers
Readme
quickpeer
Quickpeer is a simple peering library designed for easy plug & play p2p connectivity
Installation
npm install quickpeer
Usage
var peers = require('quickpeer');
// Events. Only 'message' is required.
// Each event can only have one handler, this is not a real EventEmitter
peers.on('message', (message, peer) => {
// message comes in as a buffer
});
peers.on('peer', peer => {
// Do something upon connection
// 'peer' is just a regular Socket object
peer.write('hello');
});
peers.on('error', (peer, error) => {
// Handle errors
});
peers.on('close', (peer, errored) => {
// Handle closed connections
})
var options = {
seeds: ['seedurl.com'],
port: 12345,
// Optional:
maxPeers: 8, // defaults to 8
saveConfig: false, // true means quickpeer handles peer persistence. false means the dev handles it. defaults to false
name: 'your-app-name' // only required if saveConfig is true
};
peers.start(options);
peers.broadcast('message');
// If you pass in a peer as a second argument to "broadcast" that peer will be excluded from the broadcast - useful for relaying messages.
peers.on('message', (message, peer) => {
peers.broadcast('message', peer);
});
const activePeers = peers.getPeers();
peers.disconnect(() => {
// done
}); // Close all peer connections
Limitations
In general, quickpeer is in alpha, and not battle-tested. It shouldn't be relied on for anything critical.
- Quickpeer currently assumes all peers are communicating on the same port.
- Due to the way peering works, messages that begin with the word 'peer' will not be passed to the message handler. A future version will provide a workaround.
- If a peer sends a flood of messages, they may all arrive at once. It's your responsibility to implement message parsing/delimiters.
- Quickpeer doesn't try to form a reasonable network topology, it just peers willy nilly.
License
MIT