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)