Пишу чат, который будет с большим количеством подключений.
В чате требуется проверка пользователей на бан.
Для того чтобы держать много подключений использую cluster
var cluster = require('cluster'),
numCPUs = require('os').cpus().length;
if (cluster.isMaster) {
for (var i = 0; i < numCPUs; i++) {
cluster.fork();
}
}
if (cluster.isWorker) {
var io = require('socket.io').listen(2001);
io.sockets.on('connection', function (socket) {
console.log('connected to worker id ', cluster.worker.id);
});
io.sockets.on('user-message', function (socket) {
// здесь не знаю что делать
});
}
После того как пользователь отправляет сообщение мне нужно проверить не забанен ли пользователь.
Я представлял себе что будет общий объект
USERS = {
1: {id: 1, banned: false},
2: {id: 3, banned: true}
......
}
и при каждом событии проверять его на бан.
Как это делать и где хранить этот объект?
Есть такая мысль - хранить его в мастере и из «воркера» через
process.send(); посылать все что пришло на сокет, там же, в мастере, проверять и делать рассылку всем.