UNPKG

quickpeer

Version:
75 lines (52 loc) 1.94 kB
# 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