Skip to content

Redis plugin for Primus supporting rooms as provided by `primus-rooms`

License

Notifications You must be signed in to change notification settings

stormwin/primus-redis-rooms

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

63 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

primus-redis-rooms

Build Status

primus-redis-rooms is a Redis store for Primus and primus-rooms.

It takes care of distributing messages to other instances using Redis Pub/Sub.

So, you can have client A connected to server X in room foo and have server Y emit messages to foo and client A will receive them. Magic.

Usage

Single Redis instance

You can use primus-redis-rooms with a single Redis instance, but it's not recommended in production environment, since it makes Redis a single point of failure.

var http = require('http'),
    Primus = require('primus'),
    PrimusRedisRooms = require('primus-redis-rooms');

var server = http.createServer();
var primus = new Primus(server, {
  redis: {
    host: 'localhost',
    port: 6379,
    options: {auth_pass: 'pass_key'}, //Optional, defaults to 'null'
    channel: 'primus' // Optional, defaults to `'primus`'
  },
  transformer: 'websockets'
});
primus.use('redis', PrimusRedisRooms);

//
// This'll take care of sending the message to all clients in room called
// `our-room`.
//
primus.room('our-room').write('Hello world!');

Sentinel

Redis Sentinel is a failover mechanism built into Redis.

When using Sentinel, Redis client will automatically reconnect to new master server when current one goes down.

var http = require('http'),
    Primus = require('primus'),
    PrimusRedisRooms = require('primus-redis-rooms');

var server = http.createServer();
var primus = new Primus(server, {
  redis: {
    sentinel: true,
    endpoints: [
      { host: 'localhost', port: 26379 },
      { host: 'localhost', port: 26380 },
      { host: 'localhost', port: 26381 }
    ],
    masterName: 'mymaster'
    channel: 'primus' // Optional, defaults to `'primus`'
  },
  transformer: 'websockets'
});
primus.use('redis', PrimusRedisRooms);

Changes

0.2 -> 0.3

  • Wire format change - data is no longer written to clients as { room: "foo", data: { our: "bar" } }, only actual data is sent ({ our: "bar" } in this case).

About

Redis plugin for Primus supporting rooms as provided by `primus-rooms`

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • JavaScript 100.0%