Запускает ли socket.io повторно-подключение?

Я создал простое веб-приложение, которое осуществляет некоторую связь через сервер 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 снова выдает информацию об узле (или так думает клиент), заставляя клиента повторно-подписаться.

Может ли кто-нибудь объяснить мне, как работает re-connects в socket.io и как это может произойти?

6
задан frank stallone 12 March 2012 в 14:29
поделиться