【发布时间】:2016-05-24 20:35:39
【问题描述】:
如果套接字中没有活动,则会发生 Socket.IO 超时(断开连接),但如何检测到没有活动?我没有找到关于那个的信息。检测过程如何进行?例如: 如果用户关闭网站选项卡,是否会发生断开连接? 有什么方式用户失去连接并且不会执行断开连接? 即使我离开网站,缓存信息是否会通知我在线?
【问题讨论】:
如果套接字中没有活动,则会发生 Socket.IO 超时(断开连接),但如何检测到没有活动?我没有找到关于那个的信息。检测过程如何进行?例如: 如果用户关闭网站选项卡,是否会发生断开连接? 有什么方式用户失去连接并且不会执行断开连接? 即使我离开网站,缓存信息是否会通知我在线?
【问题讨论】:
如果您在网络面板中打开浏览器的开发者工具,您可以将您的请求过滤为 ws 请求(网络套接字请求),在那里您可以看到您的活动网络套接字连接。如果您选择一种连接,您可以看到标题、帧、cookie 和时间。如果您选择框架选项,您可以看到在您的浏览器和 Web 套接字服务器之间发送和接收的内容。
下图会让你一目了然,是chrome的开发者工具:
现在你可以看到那里有一些数字,基本上你的浏览器和你的服务器正在打乒乓球。您可以在此答案SocketIO Chrome Inspector Frames
中了解有关这些数字的更多信息这个乒乓球使套接字保持活动状态,因此我们知道没有超时。至于断开连接和连接,我建议您阅读有关WebSockets API 的更多信息,在那里您可以看到有用于 onclose、onerror、onmessage 和 onopen 的事件侦听器。
所以回答这个问题:
例如:如果用户关闭网站选项卡,是否会发生断开连接?那里 是否有任何方式用户失去连接并且不会执行断开连接?
不,onclose 事件将被触发,但即使出于任何宇宙原因未触发 onclose,您最终也会因超时而断开连接。
至于你的其他问题:
即使我离开,缓存信息是否会告知我在线 网站?
是的,这不取决于套接字,这取决于您和您的实现。您可以保留在线用户列表,并且只不时更新该列表,比如说 10 分钟。您可以保留在线用户列表,并且在您更新在线用户列表之间,其中一些已经断开连接。
【讨论】: