socket.io 在浏览器连接后,刷新一次,就多了一个连接,就是服务器和浏览器的相关操作都操作N次了,如何解决?
发布于 2年前 作者 chjjin 1477 次浏览

浏览器: var socket = io.connect(‘http://localhost:3000’); socket.on('*', function(){}); 这样,

服务器: io.sockets.on('connection’, function(socket){ console.log('id:’+socket.id);}); 这样,但是这段代码是放在app.get('/’, function(){});的function里面的

然后我每次我每次刷新浏览器,就输出多次这个了,比如我刷新了3次,就会输出4次这样, 同理,客户端的代码也执行这么多次,究竟为什么这样的,但如果我不放在app.get里面就没错了,求解

另外,为什么每次刷新浏览器,socket.id都不同的?

7 回复

首先你不也能把io.sockets.on放到app.get('/’, function(){})里; 其次,本来没刷新一次页面就会新产生一个socket的对象,原来的连接等待超时后disconnect,之后删除

嗯,你说的第一个我已经改过来了 关于第二个,在刷新的时候我怎样才能把那个socket disconnect掉啊?

只要游览器断开和socket.io的连接,马上就会发出disconnect事件。也就是说,你刷新一个接连了socket.io的页面,那么这次的socket等于就自动disconnect了

那我想识别出这个身份呢?就是说是同一个人的?

@ChJJin服务器接收到socket的连接时,自己设置socket的name

回到顶部