【问题标题】:socket.io doesn't send to all roomsocket.io 不会发送到所有房间
【发布时间】:2021-12-06 14:35:16
【问题描述】:

我正在使用带有 react 的 Socket.io 来创建一个聊天室,当新用户加入聊天室时,我想向所有客户端发送更新。

const updateDiscussionClients = room => {
    let currentClients = RoomClients({room, io, connections})
    console.log(currentClients); // printing correct data
    console.log(io.sockets.adapter.rooms.get(room));
    socket.to(room).emit('clients_discussion', currentClients)
}

socket.on("join_discussion", (data) => {
    let room = 'room_' + data.id + data.name
    socket.join(room)
    updateDiscussionClients(room)
   
})

一切正常,但旧客户收到的消息,没有最后一个

日志输出:

[
  { name: 'Mohamad Zbib', id: '202100006' },
  { name: 'pu10', id: '10' }
]
Set(2) { 'pbKuaEdrfg7n83YyAAAD', '3QYOJCzlxxMOLquzAAAB' }

pbKuaEdrfg7n83YyAAAD收到了事件,3QYOJCzlxxMOLquzAAAB没有收到,以后有更新他会收到

【问题讨论】:

  • 你能提供更多细节吗?似乎您在没有完全完成想法的情况下提交了问题
  • 我只是编辑了一点,我不认为有遗漏的细节,我做了一些搜索但我不明白为什么

标签: javascript socket.io


【解决方案1】:

3QYOJCzlxxMOLquzAAAB 该事件的发送者,哪个不会接收?

socket.to("room1").emit(/* ... */); 将发送给房间内除发件人以外的所有人。 io.in("room1").emit(/* ... */); 将发送给房间内的所有人

查看此cheat sheet 了解更多信息

【讨论】:

  • 是的,他是发件人,但我试过toin,两者都是一样的,发件人没有收到
  • 我在使用in后忘记了iosocket之间的区别
猜你喜欢
  • 2017-12-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-27
  • 2014-09-28
  • 1970-01-01
  • 2013-08-01
  • 1970-01-01
相关资源
最近更新 更多