Skip to content

gunblues/node-redis-room

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

48 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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 ( socketio/socket.io-redis-adapter#13 , socketio/socket.io-redis-adapter#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

About

Use Rooms and Namespaces of Socket.IO across nodes

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published