Socket io.on many namespaces path

问题描述 投票:0回答:2

我以前没有使用过Socket io,所以现在我有点失落。

我尝试聊天。我有一个系统,当用户向其他人发送私人消息时,它会在他们之间建立连接(创建聊天ID)。

现在,我试图找到前端如何从许多聊天ID中监听事件的解决方案。现在系统看起来像这样,我不确定这是否是正确的解决方案。

Front-end
io(`/privateMessage/${user._id}`).on('message')

Back-end
      io.of(`privateMessage/${toRecipientId}`)
      .emit('message')

我的问题是,客户端是否有可能可以从诸如聊天ID的数组名称空间进行侦听,或者我应该坚持第一种解决方案?

javascript node.js reactjs sockets socket.io
2个回答
1
投票

我建议您使用“房间”方法:

https://socket.io/docs/rooms-and-namespaces/#Rooms

语法,如何连接到几个房间,如下:

socket.join(['room1', 'room2']);

0
投票

我的旧解决方案

[用户1向用户2发送消息。

在后端

套接字在打到套接字时将侦听privatMessage事件,该事件将收件人事件与所有数据一起传递给收件人id(user2)命名空间。

socket.on("privatMessage", (message, userData, toRecipientId) => {
      io.of(`privatMessage/${toRecipientId}`)
      .emit('message', userData)
    })

在前端

User2客户端在事件出现时将其ID名称空间中的消息等待消息事件所有数据都推送到消息数组。我现在不将用户的消息存储在数据库中。

io(`privatMessage/${user._id}`).on('message')

现在让我为每对用户说一个chatRoom,我想知道客户端是否可以侦听每个chatRoom中的事件

© www.soinside.com 2019 - 2024. All rights reserved.