Дублируются сообщения в чате (Socket.io), что делать?
делаю чат с помощью socket.io.Но появилась одна проблема.
- Запускаю сервер и пишу сообщение в чат — всё хорошо, сообщение отправляется.
- Обновляю страницу и вновь пишу сообщение — отправляется сразу 2 сообщения.
И так далее, сколько раз обновляешь страницу — столько раз повторяется сообщение.
Мой код:
app.get('/index', async (req, res) => {
res.sendFile(path.join(__dirname, './HTML', 'index.html'))
io.on('connection', socket => {
socket.on('Отправить сообщение', (data) => {
io.emit('Добавить сообщение', {
msg: data,
login: req.session.user.login
})
})
})
})
Проблема: Как я понял, косяк в том, что при каждом GET запросе сокет дублируется, но я не могу писать Socket-код не в GET запросе, потому что тогда у меня не будет доступа к request, а он нужен мне для того, чтобы отправить login человека, написавшего сообщение.
Ответы (1 шт):
Автор решения: Михаил Волобуев
→ Ссылка
Все-таки вынеси код, связанный с сокетами, из блока app.get. А проблему со связыванием сокет айди и логином можно решить иначе. Например, заведи объект, в котором храни айдишники и логины как ключи и значения.