Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

primus-locky

Package Overview
Dependencies
Maintainers
4
Versions
15
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

primus-locky

Primus locky is a primus plugin for locky, it provides a room based locking.

  • 1.2.3
  • latest
  • Source
  • npm
  • Socket score

Version published
Maintainers
4
Created
Source

primus-locky

Build Status Dependency Status devDependency Status

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 = require('http');
var Locky = require('locky');
var Primus = require('primus');
var PrimusLocky = require('primus-locky');

var server = http.createServer();
var primus = new Primus(server, {
  locky: {
    client: new Locky(),
    unserializeSpark: getUserIdFromSpark
  }
});

primus.use('locky', PrimusLocky);

Options

client

Since primus-locky doesn't depends directly from locky, you must inject a locky client in the options.

new Primus(server, {
  locky: {
    client: new Locky()
  }
})
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.

new Primus(server, {
  locky: {
    unserializeSpark: function unserializeSpark(spark, cb) {
      // Decode user id from headers.
      // This function should be implemented by you.
      var user = getUserFromHeaders(spark.headers);
      cb(null, 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.

new Primus(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.

new Primus(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.join('locky:article:13');

primus.lockyRoom(resource)

This method can be used to target a locky room. It's the same API as primus.room().

primus.lockyRoom('myresource').send('hello');

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

Keywords

FAQs

Package last updated on 10 Apr 2017

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc