简体   繁体   中英

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. When using socket.broadcast.to(data.room), I don't see the console logs.

Room is set to 'General' for all clients upon connection.

Ideas?

Ps.: Made a mistake thinking I had to do socket.room = 'room' . It's actually socket.join('room');

socket.join('General'); instead of socket.room fixed it.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

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