Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/375.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 导航或页面卸载后在框架中检测断开连接的websocket_Javascript_Websocket_Safari_Mobile Safari - Fatal编程技术网

Javascript 导航或页面卸载后在框架中检测断开连接的websocket

Javascript 导航或页面卸载后在框架中检测断开连接的websocket,javascript,websocket,safari,mobile-safari,Javascript,Websocket,Safari,Mobile Safari,我使用的是一个web框架,其中所有内容都通过websocket传递。新的/更新的DOM元素被传送到浏览器,事件被传送回服务器。效果很好。除非websocket关闭 这种情况发生了 使用桌面/移动Safari浏览器时,导航按钮用于离开和返回页面 切换到其他应用程序、选项卡或屏幕锁定时超时后在mobile Safari上 当WiFi关闭时等 之后,用户只会看到一个外观正常的页面,但由于没有更多的更新发生,也没有更多的事件被转发到服务器,因此所有内容显然都已失效。在这种情况下,我只想刷新页面。要么

我使用的是一个web框架,其中所有内容都通过websocket传递。新的/更新的DOM元素被传送到浏览器,事件被传送回服务器。效果很好。除非websocket关闭

这种情况发生了

  • 使用桌面/移动Safari浏览器时,导航按钮用于离开和返回页面
  • 切换到其他应用程序、选项卡或屏幕锁定时超时后在mobile Safari上
  • 当WiFi关闭时等
之后,用户只会看到一个外观正常的页面,但由于没有更多的更新发生,也没有更多的事件被转发到服务器,因此所有内容显然都已失效。在这种情况下,我只想刷新页面。要么一切恢复正常,要么用户在没有网络的情况下看到连接错误等

我试着在框架的代码中搜索,在websocket的“onclose”处理程序中添加“window.location.reload(true);”就可以了。我的状态是100%在服务器上,因此重新加载页面只会解决问题

假设我不能修改/修复我正在使用的web框架,并且它没有任何onConnectionLost客户端事件,那么我检测此场景并重新加载页面的最佳选项是什么?是否有类似“OnPageDisplayed但未正确删除”、“OnPageVisible但同时已过时”、“OnWebSocket已关闭”的事件供我使用?我可以打开一些虚拟websocket,在页面关闭时重新加载页面吗?还有什么好方法可以检测到这一点吗

谢谢