socket.io' connect'或者'重新连接'重新连接后未触发事件

时间:2015-12-22 14:18:42

标签: javascript node.js sockets socket.io

我在使用Socket.io时遇到问题。

代码很简单:

var socket = null;
var socketInit = false;    //if it is true, use reconnect

...
function connect() {
    if(!socketInit) {
        socket = io();
        socketInit = true;

        //attach event handlers
        socket.on('connect', function() {
            console.log('connect fired!');
        });
        socket.on('disconnect', function() {
            console.log('disconnect fired!');
        });
        socket.on('reconnect', function() {
            console.log('reconnect fired!');
        });
    }
    else {
        socket.io.connect();
    }
}

...
function disconnect() {
    socket.disconnect();
}

如您所见,有两个连接或断开套接字的功能。并且在连接功能中,它附加了“连接”,“断开连接”,“重新连接”和“连接”功能。处理器到插座。

首先我调用了connect函数,效果很好。服务器端也运行良好。我称之为断开连接功能,也适用于服务器。

但我再次调用了connect函数,这意味着" socketInit"变量为true,因此connect函数尝试:

socket.io.connect();

我检查了服务器和客户端控制台,看起来已经连接了,但问题是事件没有被触发!

服务器端'连接'事件在重新连接时被触发,但客户端连接'或者'重新连接'事件没有被解雇。我试图弄清楚发生了什么,但我仍然没有得到它。我多次检查Web控制台和服务器控制台,连接本身工作正常,但问题是事件无法正常工作!

如果有人知道,我将非常感谢帮助我。谢谢;)

P.S。我尝试添加'重新连接'重新连接'重新连接'重新连接错误'事件处理程序,但都不起作用。

2 个答案:

答案 0 :(得分:4)

如果您正在使用Socket.io 1.0,请尝试使用套接字上的io管理器来处理手动断开连接和重新连接。

var socket = null;
var socketInit = false;

function connect() {
    if(!socketInit) {
        socket = io();
        socketInit = true;

        //attach event handlers
        socket.on('connect', function() {
            console.log('connect fired!');
        });
        socket.on('disconnect', function() {
            console.log('disconnect fired!');
        });
        socket.on('reconnect', function() {
            console.log('reconnect fired!');
        });
    }
    else {
        socket.io.reconnect();
    }
}


function disconnect() {
    socket.io.disconnect();
}

套接字上的reconnecting_attempt,重新连接,重新连接和连接的事件都应该在之后发出。

答案 1 :(得分:2)

我正在使用socket.io 2.1.1,这是断开连接后socket.io处理重新连接时的所有事件序列:

只需socketClient.on(eventName, callBackFunc);

enter image description here