Node.js:使用 socket.io 集群

Node.js: using socket.io with cluster

我想将 socket.io 与集群一起使用。 这是我尝试过的方法,但出现此错误:

类型错误:RedisStore 不是构造函数

const app = express()
const redis = require('redis')
var cluster = require('cluster'),
numCPUs = require('os').cpus().length;

if (cluster.isMaster) {
//master process - fork children
for (var i = 0; i < numCPUs; i++) {
    cluster.fork()
}
}
else {
var RedisStore = require('redis')
    , pub = redis.createClient()
    , sub = redis.createClient()
    , client = redis.createClient();

var io = require('socket.io').listen(5000, {
    'store': new RedisStore({
        redisPub: pub
        , redisSub: sub
        , redisClient: client
    }),
});
io.sockets.on('connection', function (socket) {
    // all socket.on('eventname'... things go here
});
const http = require('http')
http.createServer(app).listen(4000);
}

RedisStoreconnect-redis 模块添加的功能,而不是 redis。要解决这个问题,您只需将 var RedisStore = require('redis') 更改为 var RedisStore = require('connect-redis').

RedisStore 构造函数期望得到一个带有redis 属性 的对象,它应该是一个redis 客户端(connect-redis API Docs).