【问题标题】:How to detect reconnect event in Socket IO如何检测 Socket IO 中的重新连接事件
【发布时间】:2016-04-24 19:36:30
【问题描述】:

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

我使用 socket.on('reconnect',function(){...}) 在客户端和服务器上设置了“重新连接”事件,但考虑到我上面的尝试,它似乎从未被调用过。

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

【问题讨论】:

  • 我已经回答了这个问题:stackoverflow.com/questions/20260170/…
  • 谢谢。我实际上已经考虑过这个解决方案,它发出一个额外的事件来为客户端/服务器设置/识别 customID。我相信它应该可以解决我的问题。只是我想知道我是否可以以某种方式触及重新连接事件,看看它是否建议任何其他解决方案
  • socket.io 中没有 reconnect 事件,我敢肯定,当你可以自己实现它时,你就不需要它了 :)
  • 好吧。我看到它被列为客户端 API 中的事件之一,所以只是想知道:)。谢谢
  • @AreWojciechowski - 根据client doc,客户端套接字上有一个reconnect 事件(滚动到该文档页面的底部)。

标签: node.js socket.io


【解决方案1】:

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

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');
});

【讨论】:

    猜你喜欢
    • 2012-02-29
    • 2020-09-20
    • 2012-02-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多