node.js определяет один и тот же массив для каждой комнаты

Как я уже сказал в заголовке, я хочу определить разные массивы для каждой комнаты. Например:

Для комнаты1 массив будет var colors=['red','blue'],

для комнаты 2 массив будет var colors=['black','white'], (То же имя, но другое содержание)

Вот мой упрощенный сервер:

var io = require('socket.io').listen(3000).set('log level', 2);

io.sockets.on('connection', function (socket) {
    var room = socket.handshake.query.room;  // room1 -- ws://localhost:3000/?room=room1

    socket.join(r); // add client to 'room1' room.
    // var colors = ['yellow','green'];
    io.sockets.in(r).emit('m', colors);
}

Я не хочу что-то вроде if(h=='room1') { var colors=['a','b'];} elseif(room=='room2') { var colors=['y','z']; } потому что будет много комнат.

Как я могу достичь этого? Должен ли я использовать пространства имен вместо комнат?

1 ответ

Решение

Затем используйте объект с именами комнат в качестве ключей с соответствующими массивами. Затем используйте текущее имя комнаты, чтобы автоматически получить массив цветов из списка цветов:

var colorList = {
      'room1' : ['a','b'],
      'room2' : ['y','z']
    }
  , colors = colorList[room]
  ;
Другие вопросы по тегам