primus-redis-rooms
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 = Primus = PrimusRedisRooms = ; var server = http;var 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; //// This'll take care of sending the message to all clients in room called// `our-room`.//primus;
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 = Primus = PrimusRedisRooms = ; var server = http;var 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;
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).