socket.io断开后自动重连上,收到的消息就重复了,断几次就会收到多少重复消息,怎么回事?
发布于 11 年前 作者 kasuo 29560 次浏览 最后一次编辑是 8 年前

socket.io断开后自动重连上,收到的消息就重复了,断几次就会收到多少重复消息,怎么回事?为何不能自动销毁掉。 该如何解决

10 回复

已经搞定 原因: 错误写法: var socket = io.connect(); socket.on(‘connect’, function () { socket.on(‘message’, function(message) { }); socket.on(‘disconnect’, function() { }); }); 正确写法: var socket = io.connect(); socket.on(‘connect’, function () { }); socket.on(‘message’, function(message) { }); socket.on(‘disconnect’, function() { });

楼主的代码是client的吗? 为什么我没写connect和discontect 也会这样呢? 手工discontect重复链接不理想啊!求解救。。

我勒个去,找到问题了 因为之前不知道在哪里看的,加了下面这个代码 socketio.socket.on(‘error’, function(){ socketio.socket.connect(); });

发现IE下此问题还存在 好像在github里看到,说这个是bug,不知道修复没。。。

     socket.on('connect', function () {
        try {
            console.log('connect success');
        } catch (e) {
        }
        var curTime = new Date().getTime();
        Ws.reConnNum = 1;
        if (Ws.lastTime && (curTime - Ws.lastTime <= 5000)) {
            Ws.lastTime = curTime;
            return;
        }
        Ws.lastTime = curTime;
        socket.emit('init', {id:speek.selfid, nation:speek.selfgroup});
    });
    socket.on('message', function (message, callback) {
        try {
            console.log('message');
        } catch (e) {
        }
    });
    socket.on('disconnect', function () {
        try {
            console.log('disconnect');
        } catch (e) {
        }
    });
    socket.on('connect_failed', function () {
        try {
            console.log('connect_failed');
        } catch (e) {
        }
    });
    socket.on('error', function () {
        try {
            console.log('error');
        } catch (e) {
        }
    });
    socket.on('reconnect_failed', function () {
        try {
            console.log('reconnect_failed');
        } catch (e) {
        }
    });
    socket.on('reconnect', function () {
        try {
            console.log('reconnect');
        } catch (e) {
        }
    });
    socket.on('reconnecting', function () {
        if (Ws.reConnNum == 3) {
            setTimeout(function () {
                if (Ws.reConnNum == 4) {
                    Ws.showDisWin();
                }
            }, 5000);
        }
        Ws.reConnNum++;
        try {
            console.log('reconnecting');
        } catch (e) {
        }
    });

我也遇到楼主的问题了,不知道我这样写是否有问题???

谢谢楼主。也是这样解决的。

socket.on('connect', function () {
});

里应该是什么代码

请问这个问题最终怎么解决的,本菜鸟初次用,也遇到这个问题,谢谢各位大神

请问这个问题最终怎么解决的,本菜鸟初次用,也遇到这个问题,谢谢各位大神

回到顶部