socket.io 1.0的reconnect问题,我测试发现重连后socket对象变化了,
发布于 7个月前 作者 Alittledaddy 682 次浏览

我的代码: 客户端: var io=socketIo.listen(server,{'log level': 2,'pingTimeout':300000,'pingInterval':1000}); 服务端:

var socket =io.connect('http://*********:3000',{'timeout': 300000,
        'reconnection': true,'reconnectionDelayMax':30000,'reconnectionDelay':1000});

我测试的逻辑: 首先禁掉一台测试机的网卡,3分钟后开启网卡,客户端重连成功,客户端触发"socket.on('reconnect’,function(){}"事件,服务端触发"io.on('connection’,function(socket){}"事件,之后服务端触发"socket.on('disconnect’,function(){}"事件(这次是把重连前的那个 socket断开了),

Connect..............1IpvXYapXibm0NzlAAAD
Connect..............uPlVSHeeZkOHt-8uAAAE
userList---2
1IpvXYapXibm0NzlAAAD---User4:disconnect.....

上面的日志可以看出:连进去2次,第一次 Connect是第一次进入,第二次是重连触发的Connect,之后把原来的socket断开了,disconnect是断开的第一次的socket,socket.id一样;

问题:难道是socket.io的重连机制是:先开个新的socket接连,再断开旧连接?而不是维护原来那个连接?

2 回复

看看源码就晓得了,不是很长 可以用用engine.io,只实现了最基本的功能,其余功能想要的自己封装,比较方便简单 http://www.amoa400.com/p/analysis-engine.io

我自己找到了官方的解释: On a reconnection now instead of ‘reconnect’ another ‘connect’ event is fired instead.

http://socket.io/docs/migrating-from-0-9/#

回到顶部