缩放Socket.IO并向所有归属客户端广播

我在用着

用“connect-redis”会话存储表示

而我通过configuration“授权”与Socket.IO绑定

所以我不必实际使用

socket.get 

要么

 socket.set 

存储和检索客户的归属variables。

但是我不确定,如果我把消息广播给特定的一群人,连接到不同的服务器上,就可以成功地获得消息。

所以这是真正的缩放!

但它似乎并没有真正的缩放,但只使用Redis作为单独的存储值。

另外我试图使用

RedisStore

这是由Socket.IO给出的

不起作用。

这是说

 DEBUG: TypeError: Converting circular structure to JSON at Redis.stringify [as pack] (native) at Redis.publish (/var/www/node_modules/socket.io/lib/stores/redis.js:106:31) at Manager.handleClient (/var/www/node_modules/socket.io/lib/manager.js:646:18) at Manager.handleHTTPRequest (/var/www/node_modules/socket.io/lib/manager.js:595:8) at Manager.handleRequest (/var/www/node_modules/socket.io/lib/manager.js:557:12) at HTTPServer.<anonymous> (/var/www/node_modules/socket.io/lib/manager.js:112:10) at HTTPServer.emit (events.js:70:17) at HTTPParser.onIncoming (http.js:1507:12) at HTTPParser.onHeadersComplete (http.js:102:31) at Socket.ondata (http.js:1403:22) 

如何将Socket.IO扩展到可用的所有缩放客户端?

编辑:我跟着Express-Session-Socket.IO教程 ,我发现io.authorization实际上使问题,但没有io.authorization 没关系 。 那个怎么样?

Socket.IO有他自己的授权。 它授权每个套接字。 要使用我的代码自定义socket.IO Auth,请在io.configure函数中写入:

 io.set('authorization', function (handshakeData, callback) { //your auth logic }); 

通过我的RedisStore示例,您可以扩展到所有可用的bradcasting客户端。