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

如果套接字中没有任何活动,则会发生Socket.IO超时(断开连接),但是如何检测到没有活动? 我没有find有关的信息。 检测过程如何工作? 例如:如果用户closures网站选项卡,发生断开连接? 有什么方法用户失去连接,断开连接将不会被执行? 即使我离开网站,caching信息是否可能通知我在线?

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

下一张图片将会为你清楚,它是Chrome的开发者工具:

Chrome开发者工具

现在你可以看到有一些数字,基本上你的浏览器和你的服务器正在做乒乓球。 你可以在这个答案中阅读更多关于这些数字的SocketIO Chrome Inspector框架

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

所以回答这个问题:

例如:如果用户closures网站选项卡,发生断开连接? 有什么方法用户失去连接,断开连接将不会被执行?

不,onclose事件将被解雇,但即使任何宇宙原因onclose不被解雇,你最终将由于超时断开。

至于你的其他问题:

即使我离开网站,caching信息是否可能通知我在线?

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