2012-03-12 4 views
6

Я создал простое веб-приложение, которое выполняет некоторую связь через сервер node.js, используя socket.io.Соединяет ли socket.io соединение повторно?

Когда пользователь подключается, узел связывает обратную информацию, которая сообщает клиенту о подписании определенных событий. Это прекрасно работает.

Но если вы позволите обозревателю установить свободное время, клиент будет подписан на события дважды. Процесс подписки работает следующим образом:

Когда пользователь подключается node.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) { ... } 

Дело в том, что никогда не говорят «вы связаны» дважды, ни один из console.log() функции в «AddUser» не дозвонились снова на стороне узла. Единственное, что, похоже, произойдет, это node.js снова испускает nodeinfo (или, как думает клиент), заставляя клиента повторно подписаться.

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

ответ

4

По умолчанию клиент пытается восстановить соединение после отключения. Это можно изменить, если хотите: socket.io client

При повторном подключении сервер увидит новое соединение, и вам решать внедрить логику для идентификации нового соединения с предыдущим. Поэтому на практике - вместо того, чтобы внедрять логику adduser в «соединение», сделайте это (или нет) после того, как клиент отправит некоторую информацию на сервер.

+0

Да. Идентично с результатом, я просто замечаю, что происходит с нашим приложением. благодаря – Xin

Смежные вопросы