一尘不染

JavaScript检测到Internet连接离线?

javascript

如何在JavaScript中检测Internet连接是否离线?


阅读 386

收藏
2020-04-25

共1个答案

一尘不染

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

标准方法是 重试 几次 请求 。如果未通过,请 警告用户 检查连接,然后 正常失败

旁注:
将整个应用程序置于“脱机”状态可能会导致很多容易出错的状态处理工作。无线连接可能会来去去等等。因此,最好的选择是妥善地失败,保留数据,并警告用户..允许他们最终解决连接问题(如果有的话),并在相当多的宽恕下继续使用您的应用。

旁注:
您可以检查像google这样的可靠网站的连通性,但这可能并不完全有用,因为它只是尝试提出自己的请求,因为虽然Google可能可用,但您自己的应用程序可能无法使用,并且您仍将继续必须处理您自己的连接问题。尝试向Google发送ping通知是确认互联网连接本身已关闭的好方法,因此,如果该信息对您有用,那么麻烦就值得了。

旁注发送Ping的方式
可以与您发出任何双向双向Ajax请求的方式相同,但是在这种情况下,向Google发送Ping会带来一些挑战。首先,我们将遇到与进行Ajax通信时通常遇到的相同的跨域问题。一种选择是设置服务器端代理,我们实际上在其中ping搜索Google(或任何站点),然后将ping结果返回给应用程序。这是一个
陷阱22
因为如果实际上是Internet连接,我们将无法连接到服务器,并且如果连接问题仅在我们自己的域上,我们将无法分辨出差异。可以尝试其他跨域技术,例如,在您的网页中嵌入一个指向google.com的iframe,然后对iframe进行轮询以检查成功/失败(检查内容等)。嵌入图像可能并不能真正告诉我们任何信息,因为我们需要通信机制做出有用的回应才能得出正确的结论。因此,再次确定整个互联网连接的状态可能比其价值更大。您必须为您的特定应用权衡这些选项。

2020-04-25