当前位置: 首页 > 面试题库 >

检测到Internet连接离线?

孔深
2023-03-14
问题内容

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


问题答案:

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

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

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

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

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



 类似资料:
  • 问题内容: 如何在JavaScript中检测Internet连接是否离线? 问题答案: 您可以通过发出 失败的XHR请求 来确定连接丢失。 标准方法是 重试 几次 请求 。如果未通过,请 警告用户 检查连接,然后 正常失败 。 旁注: 将整个应用程序置于“脱机”状态可能会导致很多容易出错的状态处理工作。无线连接可能会来去去等等。因此,最好的选择是妥善地失败,保留数据,并警告用户..允许他们最终解决

  • 我希望代码检查互联网连接,直到连接可用。如果互联网断开,我不希望执行停止。 关于堆栈溢出,很少有检查internet连接的解决方案,但是如果我使用这些解决方案,一段时间后我会得到堆栈溢出错误。 我从以下函数调用该方法: MessagingException:没有路由到主机:Connect;嵌套异常为:java.net.norouteToHostException:没有到主机的路由:连接在com.s

  • ; ConnectInternet (使用 Dialer 插件) ; Written by Joost Verburg ; ; 当没有可用连接时该函数尝试去创建一个因特网连接。 ; 如果你不能确认使用该安装程序前已有可用的连接的话 ; 在用 NSISdl 插件下载前最好先调用这个函数。 ; ; 这个函数需要 Internet Explorer 3。 ; 如果 IE3

  • 问题内容: 在我的Java应用程序中,如何检测Internet连接速度有多快?例如,我在家中使用AT&T Fast DSL,我想知道是否有一种方法可以编写执行以下操作的方法: 它将返回以kbps为单位的数字,例如2800kbps [2.8 M] 编辑:我要问的原因是在我的应用程序中,我可以打开多个Internet流,具体取决于用户的Internet连接速度,我希望它自动确定要打开多少个流而不会中断

  • 当我试着检查我的iPhone上的互联网连接时,我得到了一堆错误。有谁能帮我修好这个吗? 代码: 代码中的错误: 如果无法读取,则错误1表示: “int”不能转换为“scNetworkReachabilityFlags” 错误2&3: 找不到接受所提供参数的“init”的重载

  • 问题内容: 在Raspberry Pi上安装了NodeJS,是否可以检查rPi是否通过NodeJs连接到Internet? 问题答案: 一种快速而肮脏的方法是检查Node是否可以解决: 这并不是完全万无一失,因为您的RaspPi可以连接到Internet但由于某种原因无法解析,并且您可能还需要检查以区分“无法解析”和“无法连接到名称服务器,因此连接可能下来”)。