quickpeer

0.0.5 • Public • Published

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

Package Sidebar

Install

npm i quickpeer

Weekly Downloads

0

Version

0.0.5

License

MIT

Last publish

Collaborators

  • kanatzidis