Cordova,如何准确检测离线

Cordova, how to detect offline accurately

我正在寻找一种检测方法

  1. Phone 离线,无数据或 wifi

  2. Phone 在线,但在路由器后面阻止未经登录的访问(如酒店、免费 wifi 热点等)

  3. Phone在线,但服务器离线

数字 1 使用 cordova-network-information 很容易 2号和3号比较难。我可以向我们的服务器发送一个 ajax 作为心跳来测试它,但这无法区分情况 2 和情况 3。

有什么方法可以准确地测试情况 2 和 3?

我的第一个想法是 ajax 在 google 上检查情况 2,如果情况 2 通过,则检查情况 3。这听起来是个好主意吗?

谢谢

我之前采用的方法是按照您的建议将 AJAX 发送到我的服务器 - 发送到将 return 已知响应的端点。然后在您的应用中测试此响应。

如果发生以下情况之一,您就处于强制门户之后:

  • 响应成功(即 2xx 代码),但与您的预期不符
  • 您收到 ssl 证书不匹配错误
  • 您收到意外的 404、301 或 302 响应

如果您遇到连接错误,则很可能是您的服务器已关闭。

最后,如果您收到 DNS 解析错误,那么很可能是上述两个问题以外的连接问题(例如,您连接的网络根本没有外部互联网连接),但也有可能您的 DNS 服务器已关闭。

当然,所有这些都假设您有某种联系(即不是您问题中的第 1 点)。最后,确保您优雅地处理任何其他异常。