我正在使用
使用“connect-redis”会话商店快递
I tied it with Socket.IO through configuring "authorization"
所以我不必实际使用
socket.get
或者
socket.set
存储和检索客户的所有变量。
但我不确定如果我向特定人群广播消息,连接到不同的服务器,请成功获取消息。
这样它真的可以缩放!
但它似乎不是真正缩放,而是仅使用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)
编辑:我跟着the Express-Session-Socket.IO tutorial,我发现了 io.authorization实际上会产生问题,但如果没有 io.authorization ,它就好了。 那怎么样?
答案 0 :(得分:2)
Socket.IO拥有自己的授权。它授权每个套接字。要自定义socket.IO Auth,使用我的代码,在io.configure
函数内写入:
io.set('authorization', function (handshakeData, callback) {
//your auth logic
});
使用我的示例RedisStore,您可以扩展到所有可用的bradcasting客户端。