Имеется сокет-сервер:
socketio +
ioredis.
При загрузке страницы создается соединение с сервером:
socket = io(socketURL);
socket.on('connect', function (user) {
socket.emit('join');
});
В этом случае все работает как следует.
Проблема: при "переключении" чата инициализация сокета выполняется заново, то есть отрабатывает следующий код:
if (typeof socket != 'undefined') {
console.log('We must drop the connection (disconnect) :<');
socket.close();
}
socket = io(socketURL);
socket.on('connect', function (user) {
socket.emit('join');
});
И теперь события начинают дублироваться. Количество переключений чатов увеличивает кратность событий, то есть сначала они дублируются, потом x4, x8 и так далее. Не могу понять что сделать нужно. Разорвать соединение?
При socket.close() с клиента на сервере исполняется:
socket.on('disconnect', function () {
socket.close();
return;
});
но это не разрывает соединение и эвенты продолжают дублироваться.
Количество повторений = количество соединений WS(
скриншот). Как их правильно разорвать?
Спасибо.