socket.io断开连接如何工作?

时间:2016-05-24 10:42:56

标签: node.js socket.io

如果套接字中没有活动,则会发生Socket.IO超时(断开连接),但是如何检测到没有活动?我没有找到相关的信息。检测过程如何运作?例如: 如果用户关闭网站标签,会发生断开连接? 用户失去连接有什么方法可以不执行断开连接? 即使我离开网站,可能的缓存信息也会通知我在线吗?

1 个答案:

答案 0 :(得分:1)

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

下一张图片会让你清楚,它是chrome的开发者工具:

Chrome developer tools

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

中详细了解这些数字

这个乒乓球是让插座保持活力的原因所以我们知道没有超时。至于断开连接和连接,我建议你阅读更多关于WebSockets API的内容,在那里你可以看到有onclose,onerror,onmessage和onopen的事件监听器。

回答这个问题:

  

例如:如果用户关闭网站标签,会发生断开连接吗?那里   用户何时失去连接并且不会执行断开连接?

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

至于你的另一个问题:

  

即使我离开,可能的缓存信息也会通知我在线   网站?

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