node-redis-room
v0.1.1
Published
Redis Room for Node
Downloads
10
Maintainers
Readme
node-redis-room
Use Rooms and Namespaces of Socket.IO across nodes
Rooms and Namespaces of Socket.IO is very easy to use for implementing chat, cooperation etc. If you want to use it in multi node, you will find you cannot get the list of connected clients in a particular room ( https://github.com/socketio/socket.io-redis/issues/13 , https://github.com/socketio/socket.io-redis/pull/15 )
Someday I got inspired on this project ( https://github.com/rajaraodv/redispubsub ) so I try to implement a library that is easy to use for someone need to use rooms of socket.io across node.
Installation
npm install node-redis-room
Usage
Server side
init
//do not init at socket onconnect event
var redis = require('redis'),
nodeRedisRoom = require('node-redis-room');
var crud = redis.createClient();
var sub = redis.createClient();
var pub = redis.createClient();
nodeRedisRoom.init(io, crud, sub, pub);
preapre
//prepare user object for nodeRedisRoom at socket onconnect event
var nodeRedisRoomUser = {
id: user.id, //necessary
connectionId: socket.id, //necessary
nick: user.nick,
avatar: user.avatar
};
join
nodeRedisRoom.join(socket, roomName, nodeRedisRoomUser, function(err) {});
leave
nodeRedisRoom.leave(socket, roomName, nodeRedisRoomUser, function(err) {});
broadcast
//the command that you need to brocast to other users
nodeRedisRoom.broadcast(roomName, {
cmd: 'join',
content: nodeRedisRoomUser
});
getRoomMembers
nodeRedisRoom.getRoomMembers(roomName, function(err, users) {});
getUserHaveJoinedRooms
nodeRedisRoom.getUserHaveJoinedRooms(connectionId, function(err, rooms) {});
onDisconnect
//need to call it when socket disconnect for clearing the user data in redis
nodeRedisRoom.onDisconnect(nodeRedisRoomUser, function() {});
Example
Run from source
- start your redis server
- cd node-redis-room/example
- npm install
- DEBUG="nodeRedisRoomExample, nodeRedisRoom" node app.js
test from website
- http://nrre.gunblues.com:3000/