2013-03-03 3 views
0

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

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

для room2, массив будет 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] 
    ;