@krumza

Возможна ли кластеризация socket.io многокомнатного чата?

Добрый день всем!
Есть вот такая условная конструкция app.js:
var app = require('express')();
var http = require('http').Server(app);
var io = require('socket.io')(http);
...
app.get('/create', function(req, res) { 
      var id = Math.round((Math.random() * 1000000));
      res.redirect('/room/' + id);
      addRoom(id);
});
app.get('/room/:id', function(req, res) {
    if (roomExists(req.params.id)) {
      if (getRoomByID(req.params.id).usersinroom <= max_users_count) {
        res.sendFile(__dirname + '/chatroom.html');
      } else if (getRoomByID(req.params.id).usersinroom > max_users_count) {
        req.flash('info', 'В комнате нет свободных мест')
        res.redirect('/'); 
      }    
    } else  {
      req.flash('info', 'Комнаты не существует')
      res.redirect('/'); 
    }
});
...
io.on('connection', function (socket) {
      usersCount++;
      id++;
      socket.playerid = id;     
      var addedUser = false; 

    socket.on('initme', function(data) {
      socket.join(data.roomID);
      socket.roomID = data.roomID;
      if (this.roomID != "lobby") {
      getRoomByID(data.roomID).usersinroom++;
      users = io.sockets.adapter.rooms[data.roomID].length;
      var currentmap = maps.filter(function (obj) {
        return obj.id == data.roomID;
      })[0];
       setTimeout(function () {
            socket.emit('initial', { id: id}); 
       }, 1000);   
      io.sockets.emit("entinroom", {"id": id, "room": data.roomID, "clients": users});
      }
    });
....
});


Вопрос такой - если я сделаю pm2 start app.js -i 0 то не получится ли гадость?
Будут ли взаимодействовать пользователи из разных процессов но в одной комнате?

Если ли способы решить вопрос кластеризации приложения с socket.io многокомнатным чатом ?
  • Вопрос задан
  • 305 просмотров
Пригласить эксперта
Ответы на вопрос 1
@Alastor
можно сессии расшарить через редис
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы