有人可以提供一个例子,我需要使用socket.io-redis?

从socket.io文件[ http://socket.io/docs/rooms-and-namespaces/#sending-messages-from-the-outside-world]我读了下面,但我似乎无法连接到任何用例在我脑海中:

从外部发送消息在某些情况下,您可能希望将事件从Socket.IO进程的上下文外部发送到Socket.IO命名空间/房间中的套接字。

有几种方法来解决这个问题,比如实现自己的通道来发送消息到stream程中。

为了便于这个用例,我们创build了两个模块:

socket.io-redis socket.io-emitter 

通过实施Redis适配器:

 var io = require('socket.io')(3000); var redis = require('socket.io-redis'); io.adapter(redis({ host: 'localhost', port: 6379 })); you can then emit messages from any other process to any channel var io = require('socket.io-emitter')(); setInterval(function(){ io.emit('time', new Date); }, 5000); 

如果您拥有一组服务器并想要与连接到不同实例的客户端进行通信,则需要使用通用存储 – 即使用Redis时也是如此。

您还提到了io-emitter,这是其他进程将消息发布到客户端的一种方式。 例如,如果工作人员需要向客户发送消息,则可以使用io-emitter。 Redis是在不同进程/服务器之间共享消息的常见粘合剂。

只有当您要将解决scheme分散到多个解决scheme或节点进程时,才需要该模块。 通过Redis适配器,多个服务器可以向其他客户端广播。

基本上当你有两台服务器运行自己的服务器。 服务器A有三个客户端。 服务器B有两个不同的客户端。 这两个服务器不共享任何客户端信息,因此您将无法向所有用户发送消息。 适配器使您能够将这些不同的服务器连接成一个(使用redis),因此您可以向所有用户进行广播。

也很好的介绍看看有关socket.io和redis http://www.slideshare.net/YorkTsai/jsdc2013-28389880