首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >重新连接后未触发socket.io 'connect‘或' reconnect’事件

重新连接后未触发socket.io 'connect‘或' reconnect’事件
EN

Stack Overflow用户
提问于 2015-12-22 22:18:42
回答 2查看 16.8K关注 0票数 6

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

代码很简单:

代码语言:javascript
复制
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”、“disconnect”、“reconnect”处理程序附加到套接字。

首先我调用了connect函数,它工作得很好。服务器端也工作得很好。我调用了disconnect函数,和服务器一样工作得也很好。

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

代码语言:javascript
复制
socket.io.connect();

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

服务器端“connection”事件在重新连接时激发,但客户端“connect”或“reconnect”事件未激发。我试着弄清楚到底是怎么回事,但我还是不明白。我多次检查web控制台和服务器控制台,连接本身工作正常,但问题是事件不工作!

如果有人知道该怎么走,我将非常感激。谢谢;)

附注:我尝试添加'reconnected','reconnection','reconnect_error‘事件处理程序,但都不起作用。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-12-23 07:57:16

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

代码语言:javascript
复制
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、reconnecting、reconnected和connected事件都应该在之后发出。

票数 6
EN

Stack Overflow用户

发布于 2019-01-21 08:40:41

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

只需执行socketClient.on(eventName, callBackFunc);

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34417899

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档