Я работаю над сокетом для чата.Вот мой код сокета в файле 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
}
})