简体   繁体   English

Socket.io broadcast.to无法正常工作,但broadcast.emit可以

[英]Socket.io broadcast.to not working but broadcast.emit does

I'm trying to make a chat app work via rooms. 我正在尝试通过房间使聊天应用程序正常工作。

On the server side I have something like: 在服务器端,我有类似以下内容:

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

});

Client-side: 客户端:

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

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

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

When using socket.broadcast.emit, I see the console logs on the client side for all connected users. 使用socket.broadcast.emit时,我在客户端上看到了所有已连接用户的控制台日志。 When using socket.broadcast.to(data.room), I don't see the console logs. 当使用socket.broadcast.to(data.room)时,我看不到控制台日志。

Room is set to 'General' for all clients upon connection. 连接后,所有客户的房间均设置为“常规”。

Ideas? 想法?

Ps.: Made a mistake thinking I had to do socket.room = 'room' . 诗:误以为我必须做socket.room = 'room' It's actually socket.join('room'); 实际上是socket.join('room');

socket.join('General'); socket.join( '一般'); instead of socket.room fixed it. 而不是用socket.room固定它。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM