Видимо потому, что при каждом подключении любого клиента вы навешиваете новый обработчик на событие broadcast, который рассылает инфу всем подключенным клиентам клиентам.
В результате получается так:
1. Перезапустили серв обнулив тем самым все подключения
2. Зашли на сайт (или обновили страницу) -> произошло подключение -> сработало событие 'connection' -> повесился обработчик на событие 'broadcast'
3. Повторно зашли на сайт (или обновили страницу) -> произошло подключение -> сработало событие 'connection' -> повесился
еще один обработчик на событие 'broadcast'
4. угадайте сколько сообщений теперь прийдет клиент
ам при вызове
req.app.emit('broadcast', data)
?
решение (прежде чем смотреть попробуйте найти решение самостоятельно)ws.on('connection', (socket) => {
console.log('connected')
})
app.on('broadcast', (data = {}) => {
ws.clients.forEach(client => client.send(JSON.stringify(data)))
})