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