2012-03-12 94 views
6

我已经构建了一个简单的Web应用程序,它使用socket.io通过node.js服务器进行一些通信。是否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'}); 

插座。发出('nodeinfo')通知客户订阅事件。

所以客户有

socket.on('nodeinfo', function(data) { ... } 

的事情是它永远不会说“你”连接两次,没有执行console.log()函数“的adduser”的再次调用上的节点侧。似乎发生的唯一情况是node.js再次发出nodeinfo(或者客户端认为)导致客户端重新订阅。

任何人都可以向我解释如何重新连接在socket.io工作,以及如何发生?

回答

4

默认情况下,客户端尝试在断开连接后重新连接。如果你喜欢,可以改变它: socket.io client

如果重新连接,服务器将看到一个新的连接,并由你来实现逻辑来识别与前一个连接的新连接。所以在实践中 - 不是在“连接”时实现adduser逻辑,而是在客户端向服务器发送一些信息之后(或不)。

+0

是的。与结果相同,我只是注意到我们的应用程序会发生什么情况。谢谢 – Xin 2017-04-06 03:26:12

相关问题