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:犯了一个错误,认为我必须做socket.room = 'room' 。 它实际上是socket.join('room');

socket.join( '一般'); 而不是socket.room修复它。