$ npm install replicator-discoveryDHT discovery session for replicator
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()
new Discovery(dht, topic, opts)Options:
announce (false) see setAnnounceonpeer(peer, data) peer info callback during lookupseed seed keyPairkeyPair announced 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 startsAttributes:
topickeyPairdestroyedsuspendedannounceactive refresh cycle is alivelastRefreshed timestampbump.local local valuebump.announced announced valuebump.seen max seen remote valuediscovery.setAnnounce(bool, bump = -1)Switch mode:
true => announcefalse => lookupFor 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').
Apache-2.0