primus-locky
Primus locky is a primus extension for locky, it provides a room based locking.
This plugin requires primus-emitter, primus-rooms.
Install
npm install primus-locky
Usage
var http = ;var Locky = ;var Primus = ;var PrimusLocky = ; var server = http;var primus = server locky: client: unserializeSpark: getUserIdFromSpark ; primus;
Options
client
Since primus-locky doesn't depends directly from locky, you must inject a locky client in the options.
server locky: client:
unserializeSpark
With the room based locking, the user must be determined from the spark, if your client are logged you can retrieve it from them.
server locky: { // Decode user id from headers. // This function should be implemented by you. var user = ; ; } ;
heartbeatInterval
Define the time between each heartbeat, by default locky.ttl - 1000
. This time should be less than the locky TTL, else the lock will be losed between each tick.
server locky: heartbeatInterval: 2000 ;
autoLock
Define if the lock will be take automatically by the first user or the last user in the room. Default to true
.
server locky: autoLock: false ;
Join room
You can find how to join a room in primus-room plugin. To join a locky room, the only thing to do is to prefix it with locky:
.
// Join the room of the resource "article:13".spark;
primus.lockyRoom(resource)
This method can be used to target a locky room. It's the same API as primus.room()
.
primus;
Room based locking
The room based locking principle is very simple, it can be resume in four rules:
- When a user joins a room:
- if the room is empty, he takes the lock.
- if the room is not empty, nothing.
- When a user leaves a room:
- if he was alone in the room, nothing.
- if there is other persons in the room, a random user takes the lock.
License
MIT