- Notifications
You must be signed in to change notification settings - Fork20
Superseded by many-level. Multilevel implemented using leveldowns with reconnect support.
License
Level/multileveldown
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
Superseded bymany-level
. Please seeFrequently Asked Questions.
Similar tomultilevel
you can use this to share alevelup
database across multiple processes over a stream. In additionmultileveldown
supports seamless retry so you can reconnect to a server without your read streams / puts failing etc.
First create a server:
constmultileveldown=require('multileveldown')constlevel=require('level')constnet=require('net')constdb=level('db')constserver=net.createServer(function(sock){sock.on('error',function(){sock.destroy()})sock.pipe(multileveldown.server(db)).pipe(sock)})server.listen(9000)
Then create some clients:
constmultileveldown=require('multileveldown')constnet=require('net')constdb=multileveldown.client()constsock=net.connect(9000)sock.pipe(db.connect()).pipe(sock)db.put('hello','world',function(){db.get('hello',console.log)})
To setup reconnect in your client simply setretry: true
and reconnect to your server when the connection fails:
constmultileveldown=require('multileveldown')constnet=require('net')constdb=multileveldown.client({retry:true})constconnect=function(){constsock=net.connect(9000)constremote=db.connect()sock.on('error',function(){sock.destroy()})sock.on('close',function(){remote.destroy()setTimeout(connect,1000)// reconnect after 1s})sock.pipe(remote).pipe(sock)}connect()
multileveldown
will now make sure to retry your pending operations when you reconnect. If you create a read streamand your connection fails half way through reading that streammultileveldown
makes sure to only retry the part of thestream you are missing. Please note that this might not guarantee leveldb snapshotting if you rely on that.
Returns a new duplex server stream that you should connect with a client. Options include:
{readonly:true,// make the database be accessible as read onlypreput:function(key,val,cb){},// called before putspredel:function(key,cb){},// called before delsprebatch:function(batch,cb){}// called before batches}
Creates a new client levelup that you can connect to a server.Options are forwarded to the levelup constructor.
Returns a new duplex client stream that you should connect with a server stream
Just an alias to.connect
formultilevel
API compatibility.
Withnpm do:
npm i multileveldown
Level/multileveldown
is anOPEN Open Source Project. This means that:
Individuals making significant and valuable contributions are given commit-access to the project to contribute as they see fit. This project is more like an open wiki than a standard guarded open source project.
See theContribution Guide for more details.
Support us with a monthly donation onOpen Collective and help us continue our work.
About
Superseded by many-level. Multilevel implemented using leveldowns with reconnect support.