如何使用密码检测网络中的状态连接?

时间:2016-05-18 13:11:58

标签: javascript html5 cordova

我的应用程序中有一个与状态连接相关的功能(取决于状态网络我有一个红色或绿色圆圈)并且它正常工作,检测网络是否可用,但我有一个问题,当网络需要正确访问的密码,例如:app检测到一个免费的网络,看起来像“你在线”(在这种情况下是绿色指示灯),但你没有连接或连接的可能性,因为你没有写例如.. < / p>

如何在用户真正连接时正确检测?

这里有一个不同方法的帖子:

https://www.kirupa.com/html5/check_if_internet_connection_exists_in_javascript.htm

提前谢谢。

3 个答案:

答案 0 :(得分:1)

我认为使用Javascript只能使用navigator对象来检查在线状态。
像这样:

var isOnline = navigator.connection.type !== Connection.NONE;

因此,当您测试连接状态时,您将只能检测到任何连接活动;如果连接需要身份验证,并且尚未经过身份验证,则它不会活动,因此您能够从Javascript中检测到它...

当然使用Cordova,您将能够做更有用的事情,比如收听在线/离线活动:

$rootScope.$on('$cordovaNetwork:online', function(event, networkState) {
  doSomethingWhenNetworkGoesOnline();
});

// listen for Offline event
$rootScope.$on('$cordovaNetwork:offline', function(event, networkState) {
  doSomethingWhenNetworkGoesOffline();
});

但重点是:没有联系,没有聚会...: - )

答案 1 :(得分:0)

我认为最适合您的解决方案涉及服务器,而不是信任isOnline方法,针对公共或私有方法启动WS,因此如果您获得响应,则可以实现真正的连接。

答案 2 :(得分:0)

您无法信任导航器连接类型或Cordova网络检测功能,因为它们的行为非常随机。您可以考虑使用http调用来测试http服务器。当承诺得到解决时,你可以将你的光线变为绿色。

角度

$http.get('http://google.com').then(function(){ $scope.color = 'green'; });

您可以每隔5或10秒在一个间隔块中运行它来更新您的视图。 当然,您可以使用自己的服务器替换google.com。