Простое Vue приложение. Два роута: на одном роуте происходит подписка
beforeMount () {
socket.emit('subscribeToTimer', 1000)
socket.on('timer', timestamp => {
this.timestamp = timestamp
this.countEvents++
})
}
Само соединение вынесено в
App.vue
, чтобы не дублировать в каждом компоненте его заново.
beforeMount () {
console.log('socket work')
socket.on('connect', () => {
console.log('CONNECTION STATUS:', socket.connected)
console.log('SOCKET:', socket.id)
})
socket.on('disconnect', () => {
console.log('DISCONNECTION STATUS:', socket.disconnected)
})
socket.open()
}
И вот тут начинается проблема - если прийти на этот роут повторно, то подписка происходит еще раз. И так каждый раз. Получается, вебсокет соединение висит открытое и клиент подписывается множество раз на одно и то же событие. В итоге получаю не одно обновление в секунду таймера, а 100500.
Как надо?