See hyperswarm replicator for similar functionality.
More info on active projects and modules at dat-ecosystem.org
This library is compatible with hypercore<=v7, which is now out of date.
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
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 swarmWill 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)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.
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).
Get length of the list of total active connections, across all archives and feeds.
Leave discovery for a specific discovery key.
Rejoin discovery for a discovery key (*must be added first using discovery.add).
Exit the swarm, close all replication streams.
stream: function, replication stream for connection. Default isarchive.replicate({live, upload, download}).upload: bool, upload data to the other peer?download: bool, download data from the other peer?port: port for discovery swarmutp: use utp in discovery swarmtcp: use tcp in discovery swarmbootstrap: [string], WebRTC bootstrap signal servers for webdiscovery: string, discovery-swarm-stream server for web
Defaults from datland-swarm-defaults can also be overwritten:
dns.server: DNS serverdns.domain: DNS domaindht.bootstrap: distributed hash table bootstrapping nodes
Set DEBUG='*' in the environment to enable debugging output inside discovery-swarm.
- mafintosh/hypercore
- mafintosh/hyperdrive
- mafintosh/hyperdb
- mafintosh/discovery-swarm
- discovery-swarm-web
ISC