Tag: 重新连接

socket.io重新连接重新运行连接?

我已经构build了一个简单的Web应用程序,通过使用socket.io的node.js服务器进行一些通信。 当用户连接时,节点传回回信息告诉客户订阅某些事件。 这工作正常。 但是,如果您让浏览器设置为空闲状态,那么客户端将最终订阅事件两次。 订阅过程如下所示: 当用户连接node.js得到一个“adduser”消息 这个function的两个关键的东西是: 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) { … } 事情是从来没有说'你连接'了两次,'adduser'中的console.log()函数在节点端再次被调用。 似乎发生的唯一情况是node.js再次发出nodeinfo(或者客户端认为)导致客户端重新订阅。 任何人都可以向我解释如何重新连接在socket.io工作,以及如何可能发生?

在socket.io重新连接更新查询string参数

我通过一个自定义查询string包含一个ID来授权服务器上的客户端,当他通过socket.io连接。 var env = {id:12345}; var socket = io.connect('https://example.com', {query:'i='+env.id, port:443, reconnect:false, secure:true}); 当客户端因任何原因断开连接时,只需调用以下function即可重新连接。 socket.socket.connect(); 但是,在重新连接时, env.id通常包含与初始连接期间不同的值,我希望在每次重新连接时在查询string中包含当前值。 上面的reconnect方法会再次发送初始值,即使env.id被更改为另一个值。 我试图在调用reconnect函数时设置当前的参数,但这似乎不起作用。 socket.socket.connect('https://example.com', {query:'i='+env.id, port:443, reconnect:false, secure:true}) 有没有简单的方法来更新查询string与当前env.id值,然后重新连接? 或者我需要销毁整个套接字对象一旦断开连接,然后build立一个新的连接使用var socket = io.connect()与当前的ID?