是否检测到Internet连接处于脱机状态?

如何在JavaScript中检测Internet连接处于脱机状态

您可以通过发出失败的XHR请求来确定连接是否丢失

标准方法是重试请求几次。如果没有通过,提醒用户检查连接,然后优雅地失败

旁注:将整个应用程序置于“脱机”状态可能会导致大量易出错的状态处理工作。。无线连接可能会来来去去去,等等。因此,您的最佳选择可能是优雅地失败,保留数据,并提醒用户。。允许他们最终解决连接问题(如果有),并以相当大的宽容继续使用你的应用程序

旁注:你可以检查像谷歌这样可靠的网站的连通性,但这可能不是完全有用的,因为谷歌可能可用,但你自己的应用程序可能不可用,你仍然需要处理自己的连接问题。尝试向谷歌发送ping将是确认互联网连接本身已断开的一个好方法,因此,如果这些信息对您有用,那么可能值得为此付出代价

Sidenote发送Ping的方式与发出任何双向ajax请求的方式相同,但在这种情况下,向谷歌发送Ping会带来一些挑战。首先,我们会遇到在进行Ajax通信时通常会遇到的相同跨域问题。一种选择是设置一个服务器端代理,其中我们实际上pinggoogle(或任何网站),并将ping结果返回给应用程序。这是一个第二十二条军规,因为如果互联网连接确实是问题所在,我们将无法访问服务器,如果连接问题仅在我们自己的域上,我们将无法分辨区别。可以尝试其他跨域技术,例如,在指向google.com的页面中嵌入iframe,然后轮询iframe是否成功(检查内容等)。嵌入图像可能不会真正告诉我们什么,因为我们需要来自通信机制的有用响应,以便对正在发生的事情得出一个好的结论。因此,确定整个互联网连接的状态可能比它的价值更麻烦。你必须为你的特定应用权衡这些选项

发表评论