Discovery Swarm Stream
Alows clients to use discovery-channel to discover and connect to peers.
Clients connect to the server, search for "discovery keys", and the proxy automatically discovers and connects to peers and then proxies those connections to the client.
If two clients are discovering the same key, the proxy can connect them to each other if you set the
connectExistingClients on the server.
By default it supports connections for the hypercore-protocol used in Dat. If you'd like to support a different protocol, provide a
stream argument that conforms to what's expected in discovery-swarm.
- ES6 classes
- Arrow functions
- Weak Sets (server only)
// On a serverconst DSS =const swarm =// Hash topics through sha1 before passing them throughdefaultHash: false// Use the default discovery-swarm handshakingdefaultHandshake: false// swarm options here// Doesn't support UTP for nowconst httpServer =httpServerconst server =// On a clientconst DSS =const websocket =const socket =const swarm =connection: socketconnectionswarmswarm// If you want to add auto-reconnect logicswarm
demo/index.js for an example of how this can be used with hyperdrive.
Sent to the server
Sent from the server
Sent from either end
- streamData(streamId, data)
Behind the scenes
- Take a discovery-swarm instance
- When getting a new connection
- Find out how many clients want it's advertising keys
- If only one exists, proxy the connection to it
- I multiples exist, create new connections per client and proxy them
- Client side will get streams and should do handshaking on them themselves