GithubHelp home page GithubHelp logo

alexxnica / discovery-channel Goto Github PK

View Code? Open in Web Editor NEW

This project forked from dat-ecosystem-archive/discovery-channel

0.0 1.0 0.0 43 KB

Search for a key across multiple discovery networks and find peers who answer.

JavaScript 100.00%

discovery-channel's Introduction

discovery-channel

Search for a key across multiple discovery networks and find peers who answer.

Currently searches across and advertises on the Bittorrent DHT, centralized DNS servers and Multicast DNS simultaneously.

Uses the bittorrent-dht and dns-discovery modules.

Also check out discovery-swarm which adds connection management on top of this module.

travis

Usage

var DC = require('discovery-channel')

Returns a constructor

var channel = DC(<opts>)

Returns a new instance. opts is optional and can have the following properties:

  • dns - default undefined, if false will disable dns discovery, any other value type will be passed to the dns-discovery constructor
  • dht - default undefined, if false will disable dht discovery, any other value type will be passed to the bittorrent-dht constructor
  • hash - default sha1. provide a custom hash function to hash ids before they are stored in the dht / on dns servers.

By default hashes are re-announced around every 10 min on the dht and 1 min using dns. Set dht.interval or dns.interval to change these.

channel.join(id, [port], [cb])

Perform a lookup across all networks for id. id can be a buffer or a string. Specify port if you want to announce that you share id as well.

If you specify cb, it will be called when the first round of discovery has completed. But only on the first round.

channel.leave(id, [port])

Stop looking for id. id can be a buffer or a string. Specify port to stop announcing that you share id as well.

channel.update()

Force announce / lookup all joined hashes

var list = channel.list()

List all the channels you have joined. The returned array items look like this

{
  id: <Buffer>,
  port: <port you are announcing>
}

channel.on('peer', id, peer, type)

Emitted when a peer answers your query.

  • id is the id (as a buffer) this peer was discovered for
  • peer is the peer that was discovered {port: port, host: host}
  • type is the network type (one of ['dht', 'dns'])

channel.destroy(cb)

Stops all lookups and advertisements and call cb when done.

channel.on('close')

Emitted when the channel is destroyed

discovery-channel's People

Contributors

mafintosh avatar max-mapper avatar pfrazee avatar okdistribute avatar juul avatar arkotek avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.