2013-08-18 88 views
3

是否可以使用socket.io將消息發送到多個房間?使用Socket.io將消息發送到多個房間?

發送到1間:

io.sockets.in(room).emit("id", {}) 

發送到N室:

io.sockets.in(room1, room2, roomN).emit("id", {}) 
+0

似乎'sockets.in(R1)。在(R2)'不0.9.16工作;( – fusio

回答

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'); 
}); 

這是因爲當你使用toin要追加的房間,房間的名單爲目標。從source code (lib/socket.js)

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

這是正確的答案(我不知道另一個是否正確)。 –

相關問題