所以我将我的节点应用程序从socket.io 0.9.x迁移到1.x,我遇到配置RedisStore的问题。我在使用0.9.x时有这个工作,但我无法弄清楚如何使用1.x. documentation似乎仅适用于0.9.x.这是他们的文档中的相关部分,我遵循并使用旧版本:
var RedisStore = require('socket.io/lib/stores/redis')
, redis = require('socket.io/node_modules/redis')
, pub = redis.createClient()
, sub = redis.createClient()
, client = redis.createClient();
io.set('store', new RedisStore({
redisPub : pub
, redisSub : sub
, redisClient : client
}));
据我所知,问题似乎是这部分:
var RedisStore = require('socket.io/lib/stores/redis')
, redis = require('socket.io/node_modules/redis')
这些文件似乎不再存在于socket.io模块中。
此外,我一直在使用他们的migration guide作为参考,但没有提及如何配置RedisStore的具体更改。
非常感谢任何帮助或想法。谢谢!
答案 0 :(得分:6)
如果其他人遇到与我相同的麻烦,请按照以下说明我如何让它再次运作..
首先,您需要安装socket.io-redis
模块:
npm install socket.io-redis --save
然后,在您的节点应用程序中,您需要使用以下内容替换以前的socket + redis相关配置代码:
var redis = require('socket.io-redis')
io.adapter(redis({
host: 'localhost',
port: 6379
}))
那就是它!
参考链接:
答案 1 :(得分:1)
对于socket.io> 0.9这是通过io.adapter使用socket.io-redis完成的 查看链接https://github.com/Automattic/socket.io-redis
var redis = require('socket.io-redis') ;
io.adapter(redis({
host: 'localhost',
port: 6379
})) ;
答案 2 :(得分:0)
确定。据我所知,这个新版本的socket.io(1.0.6,具体而言)不再有socket.io/node_modules下的redis,对吗?
因此,解决方案是安装socket.io-redis并改为使用它。 但是,如果运行节点抱怨socket.io-redis没有任何createClient()方法,那么如何重用sub = redis.createClient()。
另一方面,如果我选择保留socket.io 0.9.16(这是我到目前为止使用的),我还有其他问题:客户端每20秒重新连接一次(看起来像是什么东西)与xhr-polling相关)。我也找不到任何关于这个的东西,所以,这就是我决定更新socket.io的原因,出于某种原因,他们决定改变一切......
有没有人可以帮助socket.io-redis和nodejs再次工作(使用redis.createClient()或类似的东西)?