replicator-discovery
v1.1.2
Published
peer discovery for replicator
Readme
replicator-discovery
DHT discovery session for replicator
Usage
const DHT = require('hyperdht')
const Discovery = require('@holepunchto/replicator-discovery')
const dht = new DHT({ bootstrap })
await dht.ready()
const server = dht.createServer()
await server.listen()
const discovery = new Discovery(dht, topic, {
announce: true,
seed,
relayAddresses: () => server.relayAddresses,
onpeer(peer) {
console.log(peer.publicKey)
}
})
await discovery.refresh()
await discovery.suspend()
await discovery.resume()
await discovery.destroy()
await server.close()
await dht.destroy()API
new Discovery(dht, topic, opts)
Options:
announce(false) seesetAnnounceonpeer(peer, data)peer info callback during lookupseedseedkeyPairkeyPairannounced keyPairrelayAddresses()getter for relay addresses during announceonerror(err)error-handler for internal timersonbump(number)invoked when higher number is seenlimit(Infinity) max peers emitted per refreshsuspended(false) initialize as suspendedwait(null) promise awaited before refresh starts
Attributes:
topickeyPairdestroyedsuspendedannounceactiverefresh cycle is alivelastRefreshedtimestampbump.locallocal valuebump.announcedannounced valuebump.seenmax seen remote value
discovery.setAnnounce(bool, bump = -1)
Switch mode:
true=> announcefalse=> lookup
For bump see update()
discovery.update(bump)
Updates the local bump value. The local value will be published on next refresh when announcing.
await discovery.refresh()
Performs announce/lookup and starts background discovery cycle.
await discovery.flushed()
Wait for the current in-flight refresh.
await discovery.abort()
Abort the active query and stop discovery cycle.
Use refresh() to restart.
await discovery.suspend()
Abort the active query and unannounce if needed.
await discovery.resume()
Resume and refresh.
await discovery.destroy()
Destroy permanently.
After destroy, refresh() throws Error('PeerDiscovery is destroyed').
License
Apache-2.0
