将socket.io从0.9.x迁移到1.x,配置RedisStore时出现问题

时间:2014-05-30 10:42:36

标签: node.js redis socket.io

所以我将我的节点应用程序从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的具体更改。

非常感谢任何帮助或想法。谢谢!

3 个答案:

答案 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
}))

那就是它!

参考链接:

https://github.com/automattic/socket.io-redis

答案 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()或类似的东西)?