【问题标题】:How socket.io disconnect works?socket.io 断开连接如何工作?
【发布时间】:2016-05-24 20:35:39
【问题描述】:

如果套接字中没有活动,则会发生 Socket.IO 超时(断开连接),但如何检测到没有活动?我没有找到关于那个的信息。检测过程如何进行?例如: 如果用户关闭网站选项卡,是否会发生断开连接? 有什么方式用户失去连接并且不会执行断开连接? 即使我离开网站,缓存信息是否会通知我在线?

【问题讨论】:

    标签: node.js socket.io


    【解决方案1】:

    如果您在网络面板中打开浏览器的开发者工具,您可以将您的请求过滤为 ws 请求(网络套接字请求),在那里您可以看到您的活动网络套接字连接。如果您选择一种连接,您可以看到标题、帧、cookie 和时间。如果您选择框架选项,您可以看到在您的浏览器和 Web 套接字服务器之间发送和接收的内容。

    下图会让你一目了然,是chrome的开发者工具:

    现在你可以看到那里有一些数字,基本上你的浏览器和你的服务器正在打乒乓球。您可以在此答案SocketIO Chrome Inspector Frames

    中了解有关这些数字的更多信息

    这个乒乓球使套接字保持活动状态,因此我们知道没有超时。至于断开连接和连接,我建议您阅读有关WebSockets API 的更多信息,在那里您可以看到有用于 onclose、onerror、onmessage 和 onopen 的事件侦听器。

    所以回答这个问题:

    例如:如果用户关闭网站选项卡,是否会发生断开连接?那里 是否有任何方式用户失去连接并且不会执行断开连接?

    不,onclose 事件将被触发,但即使出于任何宇宙原因未触发 onclose,您最终也会因超时而断开连接。

    至于你的其他问题:

    即使我离开,缓存信息是否会告知我在线 网站?

    是的,这不取决于套接字,这取决于您和您的实现。您可以保留在线用户列表,并且只不时更新该列表,比如说 10 分钟。您可以保留在线用户列表,并且在您更新在线用户列表之间,其中一些已经断开连接。

    【讨论】:

    • 感谢您的回复,解决了我的疑惑。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-11-09
    • 1970-01-01
    • 2017-07-17
    • 2016-07-08
    • 1970-01-01
    • 2013-11-29
    • 1970-01-01
    相关资源
    最近更新 更多