ssb-server gossip plugin
to have a peer to peer network, a ssb instance needs to have some other peers to connect with. This module keeps track of those peers. There are a number of ways a you can know about a peer,
- observed a local udp broadcast from them ssb-server/plugins/local
- received their device-address message ssb-device-address
- received a pub message about them ssb-gossip/init
- configured their address manually as a seed
- or the user called gossip.add
Notice these are mostly managed by other plugins.
The gossip plugin then decides when to connect to those peers, which it does mostly randomly. (connecting randomly means you will eventually connect to everyone, thus a useful database property: eventual consistency)
Get the current known peers.
peers
peers(cb)
Add a peer.
#add a multiserver address.
add {addr}
#legacy format
add --host {string} --port {number} --key {feedid}
add(addr, cb)
add({ host:, port:, key: }, cb)
addr
(address string): A multiserver addresshost
(host string): IP address or hostname.port
(port number)key
(feedid)
Remove an address from the peer table.
remove {addr}
remove --host {string} --port {number} --key {feedid}
remove(addr)
remove({ host:, port:, key: })
used internally by the gossip plugin to measure latency and clock skew
Add an address to the peer table, and connect immediately.
connect {addr}
connect --host {string} --port {number} --key {feedid}
connect(addr, cb)
connect({ host:, port:, key: }, cb)
addr
(address string): An address string, of the following format:hostname:port:feedid
.host
(host string): IP address or hostname.port
(port number)key
(feedid)
Listen for gossip events.
changes
changes()
Events come in the following forms:
{ type: 'discover', peer:, source: }
{ type: 'connect', peer: }
{ type: 'connect-failure', peer: }
{ type: 'disconnect', peer: }
Tell ssb-server to reinitiate gossip connections now.
Update the config to enable a gossip type.
enable {type}
enable(type, cb)
- type (string): The type of gossip to enable: local, global, or seed. Default global.
Update the config to disable a gossip type.
disable {type}
disable(type, cb)
- type (string): The type of gossip to enable: local, global, or seed. Default global.
MIT