套接字多次发出事件

Pro*_*fer 6 javascript messaging chat node.js socket.io

我正在套接字上聊天。这是我在nodejs文件中运行良好的套接字代码。

外部套接字io.emit工作正常,并向与之连接的所有用户发出消息conversationId

但是socket.broadcast.emit我用来通知用户的(当用户使用应用程序时)会socket.broadcast.emit多次发出()事件。为什么会这样呢?我是否完全错过了套接字方法。

socket.on('sendMessage', async(action2) => {
  try {
    action2.author = socket.decoded.id
    action2.readBy = [socket.decoded.id]
    action2.deliveredTo = [socket.decoded.id]
    const createMessage = await Message.create(action2)

    const sender = await User.findOne({ _id: socket.decoded.id }, { firstName: 1 })

    const memebers = //some api call to get members
    const promises = members.map(async(member) => {
      // socket for message
      const socketNotification = {
        // my object
      }
      console.log(socketNotification, 'socketNotifcication')
      socket.broadcast.emit(`messageSocket${member.memberId}`, socketNotification)
    })
    await Promise.all(promises)
    io.emit(action2.conversationId, messages) // "newMessage"
  } catch (err) {
    throw err
  }
})
Run Code Online (Sandbox Code Playgroud)

小智 0

使用io.to(messageSocket${member.memberId}).emit()而不是socket.broadcast.emit()