Делает сокет.io переподключает повторное подключение?
Я построил простое веб-приложение, которое выполняет некоторую связь через узел.сервер js с использованием сокета.Ио.
когда пользователь подключается, узел передает обратно информацию, которая говорит клиенту, чтобы подписаться на определенные события. Это прекрасно работает.
но если вы позволите браузеру установить простоя, клиент в конечном итоге подписывается на события дважды. Процесс подписки работает следующим образом:
когда пользователь подключает узел.js получает сообщение "adduser"
в две ключевые вещи, которые hapen в этой функции:
socket.on('adduser', function(data)
<snip>
socket.emit('nodeinfo', {node_id: NODE_ID});
socket.emit('update', {msg: 'you are connected'});
сокет.emit ('nodeinfo') сигнализирует клиенту подписаться на события.
таким образом, клиент имеет
socket.on('nodeinfo', function(data) { ... }
дело в том, что он никогда не говорит "Вы подключены" дважды, ни один из консоли.функции log () в "adduser" снова вызываются на стороне узла. Единственное что происходит-это узел.js снова испускает nodeinfo (или так думает клиент), заставляя клиента повторная подписка.
может ли кто-нибудь объяснить мне, как повторно подключается в сокете.io работает и как это может произойти?
1 ответов
по умолчанию клиент пытается повторно подключиться после отключения. Это можно изменить, если хотите: гнездо.клиент Ио
при повторном подключении сервер увидит новое соединение, и вам придется реализовать логику для идентификации нового соединения с предыдущим. Поэтому на практике-вместо реализации вашей логики adduser при "подключении" сделайте это (или нет) после того, как клиент отправит некоторую информацию на сервер.