#node.js #redis #socket.io #cluster-computing
#node.js #redis #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);
}
Ответ №1:
RedisStore
это функциональность, добавленная connect-redis
модулем, а не redis
. чтобы исправить это, вам просто нужно изменить var RedisStore = require('redis')
на var RedisStore = require('connect-redis')
.
RedisStore
конструктор ожидает получить объект со redis
свойством, и это должен быть клиент redis ( connect-redis
документы API).
Комментарии:
1. Спасибо и нужно ли устанавливать базу данных redis?
2. @soroushasamiesfahan
redis
модуль является клиентом для работы с базой данных / сервером Redis