Делает сокет.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 при "подключении" сделайте это (или нет) после того, как клиент отправит некоторую информацию на сервер.