npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

primus-locky

v1.2.3

Published

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

Downloads

10

Readme

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