Join the swarm for a given hypercore or hyperdrive feed.
JavaScript
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
.gitignore Initial commit May 23, 2016
.travis.yml add node 7 to deps Nov 28, 2016
collaborators.md add collaborators Jun 7, 2016
example.js added safe-buffer and refactored a callback to make standardJS happy Jul 21, 2017
index.js Removed unused variable. Jun 29, 2018
package-lock.json
package.json 8.0.0 Jun 30, 2018
readme.md Remove incorrect info (#16) Jul 26, 2018
test.js Updated to latest upstream and cleaned up tests. Jun 29, 2018

readme.md

hyperdiscovery

build status

Join the p2p swarm for hypercore, hyperdrive, and hyperdb feeds. Uses discovery-swarm under the hood.

npm install hyperdiscovery

Usage

Run the following code in two different places and they will replicate the contents of the given ARCHIVE_KEY.

var hyperdrive = require('hyperdrive')
var swarm = require('hyperdiscovery')

var archive = hyperdrive('./database', 'ARCHIVE_KEY')
var sw = swarm(archive)
sw.on('connection', function (peer, type) {
  console.log('got', peer, type) 
  console.log('connected to', sw.connections.length, 'peers')
  peer.on('close', function () {
    console.log('peer disconnected')
  })
})

Will use discovery-swarm to attempt to connect peers. Uses datland-swarm-defaults for peer introduction defaults on the server side, which can be overwritten (see below).

The module can also create and join a swarm for a hypercore feed:

var hypercore = require('hypercore')
var swarm = require('hyperdiscovery')

var feed = hypercore('/feed')
var sw = swarm(feed)

The module can also create and join a swarm for a hyperdb feed:

var hyperdb = require('hyperdb')
var swarm = require('hyperdiscovery')

var db = hyperdb('/feed', 'ARCHIVE_KEY')
db.on('ready', function() {
  var sw = swarm(db)
})

A hyperdb database must be ready before attempting to connect to the swarm.

API

var sw = swarm(archive, opts)

Join the p2p swarm for the given feed. The return object, sw, is an event emitter that will emit a peer event with the peer information when a peer is found.

sw.connections

Get the list of currently active connections.

sw.close()

Exit the swarm

Options
  • stream: function, replication stream for connection. Default is archive.replicate({live, upload, download}).
  • upload: bool, upload data to the other peer?
  • download: bool, download data from the other peer?
  • port: port for discovery swarm
  • utp: use utp in discovery swarm
  • tcp: use tcp in discovery swarm

Defaults from datland-swarm-defaults can also be overwritten:

  • dns.server: DNS server
  • dns.domain: DNS domain
  • dht.bootstrap: distributed hash table bootstrapping nodes

See Also

License

ISC