Primus locky is a primus plugin for locky, it provides a room based locking.
Primus locky is a primus extension for locky, it provides a room based locking.
npm install primus-locky
var http = require'http';var Locky = require'locky';var Primus = require'primus';var PrimusLocky = require'primus-locky';var server = httpcreateServer;var primus = serverlocky:client:unserializeSpark: getUserIdFromSpark;primususe'locky' PrimusLocky;
With the room based locking, the user must be determined from the spark, if your client are logged you can retrieve it from them.
serverlocky:unserializeSpark:// Decode user id from headers.// This function should be implemented by you.var user = getUserFromHeaderssparkheaders;cbnull user;;
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.
Define if the lock will be take automatically by the first user or the last user in the room. Default to
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
// Join the room of the resource "article:13".sparkjoin'locky:article:13';
This method can be used to target a locky room. It's the same API as
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.