我的应用程序中有一个与状态连接相关的功能(取决于状态网络我有一个红色或绿色圆圈)并且它正常工作,检测网络是否可用,但我有一个问题,当网络需要正确访问的密码,例如:app检测到一个免费的网络,看起来像“你在线”(在这种情况下是绿色指示灯),但你没有连接或连接的可能性,因为你没有写例如.. < / p>
如何在用户真正连接时正确检测?
这里有一个不同方法的帖子:
https://www.kirupa.com/html5/check_if_internet_connection_exists_in_javascript.htm
提前谢谢。
答案 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。