socket.io-redis如何处理房间?

时间:2016-04-01 23:36:33

标签: socket.io socket.io-redis

如果我有多个进程并且正在使用socket.io-redis,那么当我io.to(room).emit(namespace, message);时,这是否可以无缝且高效地处理?或者我误解了socket.io-redis的角色?

1 个答案:

答案 0 :(得分:1)

嗨,据我所知,这是 -

io.to('room').emit('namespace', 'message');

表示将名为&#39;名称空间&#39; message&#39; <&strong> 发送给&#39;会议室频道,包括发件人。

详细信息(在here中找到) -

 // send to current request socket client
 socket.emit('message', "this is a test");// Hasn't changed

 // sending to all clients, include sender
 io.sockets.emit('message', "this is a test"); // Old way, still compatible
 io.emit('message', 'this is a test');// New way, works only in 1.x

 // sending to all clients except sender
 socket.broadcast.emit('message', "this is a test");// Hasn't changed

 // sending to all clients in 'game' room(channel) except sender
 socket.broadcast.to('game').emit('message', 'nice game');// Hasn't changed

 // sending to all clients in 'game' room(channel), include sender
 io.sockets.in('game').emit('message', 'cool game');// Old way, DOES NOT WORK ANYMORE
 io.in('game').emit('message', 'cool game');// New way
 io.to('game').emit('message', 'cool game');// New way, "in" or "to" are the exact same: "And then simply use to or in (they are the same) when broadcasting or emitting:" from http://socket.io/docs/rooms-and-namespaces/

 // sending to individual socketid, socketid is like a room
 io.sockets.socket(socketid).emit('message', 'for your eyes only');// Old way, DOES NOT WORK ANYMORE
 socket.broadcast.to(socketid).emit('message', 'for your eyes only');// New way

可以找到更多 here

基本功能 -

实际上问题是你的问题非常严重,以至于其他人很难理解你真正需要的东西。所以,我认为你需要知道这背后的基本概念。所以我也在添加这部分内容以供您查询。

socket.io Redis的概念是你应该管理与socket的连接并将数据以redis形式存储为DB。

Redis通常用于在DB(或缓存数据库)上应用图层,以便可以存储一些数据一段时间。因此,在这段时间内,如果需要任何查询,数据将来自Redis,而不是来自数据库查询。

此系统适用于performance tuning,以便您的系统可以同时处理大量负载。

在您的情况下,您可以在短时间内缓存数据,以便通过 socket.io 发送消息。

更多信息可以在这里找到 -

  1. http://notjoshmiller.com/socket-io-rooms-and-redis/

  2. http://goldfirestudios.com/blog/136/Horizontally-Scaling-Node.js-and-WebSockets-with-Redis

  3. https://github.com/socketio/socket.io-redis/issues/98

  4. 认为这个答案一定会对你有帮助。