swarmlog
v1.4.0
Published
create a p2p webrtc swarm around a hyperlog
Downloads
27
Maintainers
Readme
swarmlog
create a p2p webrtc swarm around a hyperlog
example
first generate some ed25519 keys:
$ node -pe "JSON.stringify(require('ssb-keys').generate())" > keys.json
now create a hyperlog publisher that will write a new message every second:
publish.js:
var swarmlog = require('swarmlog')
var memdb = require('memdb')
var log = swarmlog({
keys: require('./keys.json'),
sodium: require('chloride/browser'),
db: memdb(),
valueEncoding: 'json',
hubs: [ 'https://signalhub.mafintosh.com' ]
})
var times = 0
setInterval(function () {
log.append({ time: Date.now(), msg: 'HELLO!x' + times })
times++
}, 1000)
and a follower that will consume the log:
var swarmlog = require('swarmlog')
var memdb = require('memdb')
var log = swarmlog({
publicKey: require('./keys.json').public,
sodium: require('chloride/browser'),
db: memdb(),
valueEncoding: 'json',
hubs: [ 'https://signalhub.mafintosh.com' ]
})
log.createReadStream({ live: true })
.on('data', function (data) {
console.log('RECEIVED', data)
})
api
var swarmlog = require('swarmlog')
var log = swarmlog(opts)
Create a hyperlog instance log
from:
opts.sodium
- a sodium instance:require('sodium')
in node orrequire('chloride/browser')
in the browseropts.db
- a leveldb instance (use level-browserify in the browser)opts.valueEncoding
- valueEncoding to use for the hyperlogopts.hubs
- array of signalhub hubs to useopts.publicKey
- (oropts.public
) - ed25519 public keyopts.secretKey
- (oropts.private
) - ed25519 private keyopts.keys
- object, another place to putpublicKey/public
andsecretKey/privateKey/private
opts.peerStream(peer)
- optional function that should return the stream to use for a peer swarm connection. Use this if you want to multiplex some other protocols on the same swarm alongside the hyperlog replication.
Public and private keys are either a hex string, a binary Buffer
, or a
base64-encoded string ending with '.ed25519'
(ssb-keys style).
If opts
is a string it will be interpreted as the opts.publicKey
for easier
following.
Optionally provide a wrtc instance as opts.wrtc
to create a swarmlog in
node.
log.swarm
the underlying webrtc-swarm instance
log.hub
the underlying signalhub instance
p2p
Currently the swarm relies on signalhub to assist in the webrtc swarm setup, but ideally in the future this could be replaced or augmented with a webrtc DHT.
install
npm install swarmlog
license
BSD