Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
This repository was archived by the owner on Dec 2, 2024. It is now read-only.
/multileveldownPublic archive

Superseded by many-level. Multilevel implemented using leveldowns with reconnect support.

License

NotificationsYou must be signed in to change notification settings

Level/multileveldown

Repository files navigation

Superseded bymany-level. Please seeFrequently Asked Questions.

Usage

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)})

Reconnect

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.

API

multileveldown.server(db, [options])

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}

clientDb = multileveldown.client([options])

Creates a new client levelup that you can connect to a server.Options are forwarded to the levelup constructor.

clientDb.connect()

Returns a new duplex client stream that you should connect with a server stream

clientDb.createRpcStream()

Just an alias to.connect formultilevel API compatibility.

Install

Withnpm do:

npm i multileveldown

Contributing

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.

Donate

Support us with a monthly donation onOpen Collective and help us continue our work.

License

MIT

About

Superseded by many-level. Multilevel implemented using leveldowns with reconnect support.

Topics

Resources

License

Code of conduct

Stars

Watchers

Forks

Sponsor this project


    [8]ページ先頭

    ©2009-2025 Movatter.jp