TransWikia.com

Дублируются сообщения в чате (Socket.io), что делать?

Stack Overflow на русском Asked on December 1, 2020

делаю чат с помощью socket.io.Но появилась одна проблема.

  1. Запускаю сервер и пишу сообщение в чат — всё хорошо, сообщение отправляется.
  2. Обновляю страницу и вновь пишу сообщение — отправляется сразу 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 человека, написавшего сообщение.

One Answer

Все-таки вынеси код, связанный с сокетами, из блока app.get. А проблему со связыванием сокет айди и логином можно решить иначе. Например, заведи объект, в котором храни айдишники и логины как ключи и значения.

Answered by Михаил Волобуев on December 1, 2020

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP