2014-02-23 30 views
1

我試圖通過房間使聊天應用程序工作。Socket.io broadcast.to不工作,但broadcast.emit確實

在服務器端,我有這樣的:

io.sockets.on('connection', function (socket) { 
    socket.emit('connection', { userId: socket.id}); 
    socket.room = 'General'; 
    console.log(socket.room); 

    socket.on('sendMessage', function (data) { 
    console.log(data.room); 
    // socket.broadcast.emit('receiveMessage', { data: data }); 
    socket.broadcast.to(data.room).emit('receiveMessage', { data: data }); 
    }); 

    socket.on('disconnect', function() { 
    console.log("DISCONNECT"); 
    socket.emit('disconnect'); 
    }); 

}); 

客戶端:

var room = 'General'; 
    var message = 'test'; 

    socket.emit('sendMessage', { room : room, message: message }); 

    socket.on('receiveMessage', function (data) { 
    console.log(data); 
    }); 

當使用socket.broadcast.emit,我看到在客戶端的控制檯日誌的所有連接的用戶。當使用socket.broadcast.to(data.room)時,我看不到控制檯日誌。

連接時,所有客戶端的房間設置爲「常規」。

想法?

Ps .:認爲我不得不做012KB。它實際上是socket.join('room');

回答

2

socket.join('General');而不是socket.room修復它。

相關問題