Skip to content
This repository was archived by the owner on Jan 7, 2022. It is now read-only.

Repository files navigation

deprecated See hyperswarm replicator for similar functionality.

More info on active projects and modules at dat-ecosystem.org


hyperdiscovery

Old documentation below

This library is compatible with hypercore<=v7, which is now out of date.

build status

Join the p2p swarm for hypercore and hyperdrive. Uses discovery-swarm under the hood. Also works in web browsers using discovery-swarm-web.

This module only works

npm install hyperdiscovery

Usage

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

varhyperdrive=require('hyperdrive')varhypercore=require('hypercore')varDiscovery=require('hyperdiscovery')vararchive=hyperdrive('./database','ARCHIVE_KEY')vardiscovery=Discovery(archive)discovery.on('connection',function(peer,type){console.log('got',peer,type)console.log('connected to',discovery.connections,'peers')peer.on('close',function(){console.log('peer disconnected')})})// add another archive/feed latervarfeed=hypercore('./feed')discovery.add(feed)// adds this hypercore feed to the same discovery swarm

Will use discovery-swarm to attempt to connect peers. Uses dat-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:

varhypercore=require('hypercore')varDiscovery=require('hyperdiscovery')varfeed=hypercore('/feed')vardiscovery=Discovery(feed)

API

var discovery = Discovery(archive, opts)

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

discovery.add(archive, [opts])

Add an archive/feed to the discovery swarm. Options will be passed to discovery-swarm. If you pass opts.announce as a falsy value you don't announce your port (discover-only mode).

discovery.totalConnections

Get length of the list of total active connections, across all archives and feeds.

discovery.leave(discoveryKey)

Leave discovery for a specific discovery key.

discovery.rejoin(discoveryKey)

Rejoin discovery for a discovery key (*must be added first using discovery.add).

discovery.close()

Exit the swarm, close all replication streams.

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
  • bootstrap: [string], WebRTC bootstrap signal servers for web
  • discovery: string, discovery-swarm-stream server for web

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

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

Debugging

Set DEBUG='*' in the environment to enable debugging output inside discovery-swarm.

See Also

License

ISC

About

[ DEPRECATED - see https://github.com/hyperswarm/replicator for similar functionality. More info on active projects and modules at https://dat-ecosystem.org/ ]

Resources

Stars

132 stars

Watchers

6 watching

Forks

Releases

Packages

Used by

Contributors

Languages