UNPKG

@waku/discovery

Version:

Contains various discovery mechanisms: DNS Discovery (EIP-1459, Peer Exchange, Local Peer Cache Discovery.

31 lines 1.09 kB
import { Logger } from "@waku/utils"; const log = new Logger("discovery:fetch_nodes"); /** * Fetch nodes using passed [[getNode]] until it has been called [[maxGet]] * times, or it has returned empty or duplicate results more than [[maxErrors]] * times. */ export async function* fetchNodes(getNode, maxGet = 10, maxErrors = 3) { const peerNodeIds = new Set(); let totalSearches = 0; let erroneousSearches = 0; while (totalSearches < maxGet && erroneousSearches < maxErrors // Allows a couple of empty results before calling it quit ) { totalSearches++; const peer = await getNode(); if (!peer || !peer.nodeId) { erroneousSearches++; continue; } if (!peerNodeIds.has(peer.nodeId)) { peerNodeIds.add(peer.nodeId); // ENRs without a waku2 key are ignored. if (peer.waku2) { yield peer; } log.info(`got new peer candidate from DNS address=${peer.nodeId}@${peer.ip}`); } } } //# sourceMappingURL=fetch_nodes.js.map