как сделать так, чтобы сообщения, которые приходили в общий чат, не отображались в приватном?

При коннекте, юзер попадает в комнату общего чата, на клиенте, при нажатии на юзера, создается комната приватного чата или юзер присоединяется к ней. Если пользователи общаются в приватном чате, то всё ок. Юзеры в общем чате не видят сообщений. Но если писать в общий чат, то юзеры в приватном увидят их. Подскажите, пожалуйста, как сделать, так, чтобы можно было отслеживать сообщения в общем чате и не получать их в приватном?

let userOnline = {};
let chat = {};
 io.on("connection", function(socket) {
  socket.join("public");
  socket.on("start", function() {
    socket.join("public");
    console.log(io.sockets.adapter.rooms);
  });
  socket.on("login", function(data) {
    socket.broadcast.emit("login", { online: data.userName });
    userOnline[socket.id] = data.userName;
    io.emit("users", userOnline);
  });
  socket.on("disconnect", function() {
    delete userOnline[socket.id];
    io.emit("users", userOnline);
  });
  socket.on("chat message", function(data) {
    if (data.user) {
      io.in(chat.id).emit("chat message", { msg: data.mess, name: data.name });
    } else {
      io.sockets.in("public").emit("chat message", { msg: data.mess, name: data.name });
    }
  });
  socket.on("join", function(data) {
    if (chat.id !== data.from + data.to && chat.id !== data.to + data.from) {
      chat = data;
      socket.join(chat.id);
    } else {
      socket.join(data.to + data.from);
    }
    console.log(io.sockets.adapter.rooms);
  });
});

Ответы (0 шт):