我以前没有使用过Socket io,所以现在我有点失落。
我尝试聊天。我有一个系统,当用户向其他人发送私人消息时,它会在他们之间建立连接(创建聊天ID)。
现在,我试图找到前端如何从许多聊天ID中监听事件的解决方案。现在系统看起来像这样,我不确定这是否是正确的解决方案。
Front-end
io(`/privateMessage/${user._id}`).on('message')
Back-end
io.of(`privateMessage/${toRecipientId}`)
.emit('message')
我的问题是,客户端是否有可能可以从诸如聊天ID的数组名称空间进行侦听,或者我应该坚持第一种解决方案?
我建议您使用“房间”方法:
https://socket.io/docs/rooms-and-namespaces/#Rooms
语法,如何连接到几个房间,如下:
socket.join(['room1', 'room2']);
我的旧解决方案
[用户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中的事件