如何检测Socket IO中的重新连接事件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何检测Socket IO中的重新连接事件相关的知识,希望对你有一定的参考价值。

每当客户端连接时,我使用socket.id为该客户端分配一个id,并将其保存在服务器中以供将来参考。我现在遇到的问题是断开/重新连接。我甚至不确定如何模拟这种情况,因为如果我重新加载客户端页面,它在技术上创建一个新客户端并连接到具有不同ID的服务器。如果我断开并手动连接客户端,那么客户端将再次具有不同的id(socket.id)。

我使用socket.on('reconnect',function(){...})在客户端和服务器上设置'reconnect'事件,但是考虑到我在上面尝试的内容,它似乎永远不会被调用。

那么你将如何模拟这种情况呢?那么检测这个新客户端实际上是否已断开连接的同一客户端的最佳方法是什么?

答案

客户端上有一个重新连接事件,您可以在其中向服务器发出并找到重新连接的客户端

socket.on('reconnect', function () {
    console.log('you have been reconnected');
    // where username is a global variable for the client
    socket.emit('user-reconnected', username);
});

在服务器上你可以得到它

socket.on('user-reconnected', function (username) {
     console.log(username + ' just reconnected');
});

以上是关于如何检测Socket IO中的重新连接事件的主要内容,如果未能解决你的问题,请参考以下文章

如何检测 socket.io 上的断开连接?

重新连接到我的 socket.io 服务器后,没有收到从我的 android 设备发送的事件

如何检测未注册的socket.io事件?

如何在socket.io中的断开事件上获取断开连接的客户端的套接字ID

如何在 Socket.IO 中模拟连接失败

从操作系统内核看Java非阻塞IO事件检测