2013-08-18 4 views

ответ

4

sockets.in метод принимает только один номер в качестве аргумента, так вещать на несколько комнат вы придется переустанавливать помещение между выбросами. Что-то вроде этого должно работать:

['room1', 'room2', 'room3'].forEach(function(room){ 
    io.sockets.in(room).emit("id", {}); 
}); 
+0

о круто, даже в 0.9.16 – fusio

+0

Обновленный ответ на 0.9? .16 – levi

+0

Так что ответ не такой :) спасибо – fusio

9

Да, вы можете испустить несколько комнат в целом. От the tests:

socket.on('emit', function(room){ 
    sio.in('woot').in('test').emit('a'); 
    sio.in('third').emit('b'); 
}); 

Это потому, что когда вы используете to или in вы Добавляя комнату в список комнат, которые будут направлены. Из source code (lib/socket.js): `sockets.in (r1) .in

Socket.prototype.to = 
Socket.prototype.in = function(name){ 
    this._rooms = this._rooms || []; 
    if (!~this._rooms.indexOf(name)) this._rooms.push(name); 
    return this; 
}; 
+0

Правильный ответ (я не знаю, был ли другой когда-либо правильный). –