CNode

socket.io断开后自动重连上,收到的消息就重复了,断几次就会收到多少重复消息,怎么回事?

Kkasuo发布于14 年前最后回复11 年前10 回复31405 浏览0 收藏

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

查看回复

回复 (10)

K
kasuo#1·14 年前

已经搞定 原因: 错误写法: 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() { });

A
arrowing#3·13 年前

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

A
arrowing#4·13 年前
引用 arrowing楼主的代码是client的吗? 为什么我没写connect和discontect 也会这样呢? 手工discontect重复链接不理想啊!求解救。。

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

A
arrowing#5·13 年前
引用 arrowing楼主的代码是client的吗? 为什么我没写connect和discontect 也会这样呢? 手工discontect重复链接不理想啊!求解救。。

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

X
xiaosong#6·13 年前
     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) {
        }
    });

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

D
djt-alsan#9·11 年前

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

D
djt-aslan#10·11 年前

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

参与回复
登录后即可参与回复。登录