【问题标题】:Node.js: using socket.io with clusterNode.js:使用带有集群的 socket.io
【发布时间】:2020-12-25 04:15:16
【问题描述】:

我想将 socket.io 与 cluster 一起使用。 这是我尝试过的,但我收到了这个错误:

TypeError: 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);
}

【问题讨论】:

    标签: node.js redis socket.io cluster-computing


    【解决方案1】:

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

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

    【讨论】:

    • 谢谢,需要安装redis数据库吗?
    • @soroushasamiesfahan redis 模块是与Redis 数据库/服务器一起工作的客户端
    猜你喜欢
    • 2019-05-13
    • 1970-01-01
    • 2012-05-19
    • 2014-11-25
    • 2017-11-05
    • 2013-06-12
    • 2012-08-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多