RangerMauve / discovery-swarm-web

Abstracts away discovery-swarm interaction with WebRTC and a websocket gateway.
MIT License
43 stars 9 forks source link

discovery-swarm-web

Abstracts away discovery-swarm interaction with WebRTC and a websocket gateway.

npm install --save discovery-swarm-web

Example:

const DiscoverySwarmWeb = require('discovery-swarm-web')
const swarm = new DiscoverySwarmWeb({
  stream: () => archive.replicate(),
})

swarm.join(archive.discoveryKey)

How it works

Under the hood it uses @geut/discovery-swarm-webrtc to find WebRTC peers for channels, and uses discovery-swarm-stream over a websocket to bridge to the rest of the Dat network by using discovery-swarm along with the dat-swarm-defaults configuration.

A websocket gets created for signaling WebRTC peers, and another one gets created to proxy connections from the P2P network.

API

new DiscoverySwarmWeb(opts)

opts include:

swarm.join(key)

Starts looking for peers for the given key. This should be either a string or a Buffer. For Dat, you should use the discoveryKey of your hypercore or hyperdrive.

swarm.leave(key)

Stops looking for peers for the given key.

swarm.close(), swarm.destroy()

Close the swarm: closes all connections to peers, to the discovery server.

CLI

You can start your own gateway for added performance and privacy using the CLI, or if you want to host one for an application you're building. By default it will listen on TCP 3472 (DISC), but that can be changed with the --port flag.

npm install -g discovery-swarm-web

discovery-swarm-web --port 3472

Roadmap: