[英]Check for internet connection on Javascript
好,我知道了 我在angular.js上构建了此应用程序,在node.js上构建了后端...绝对可以正常工作。
客户端无法正常连接到互联网。 它不时地联机和脱机。 我需要做的是对我的服务器执行ping操作以检查其上的连接的例程。 如果失败,我需要对其他内容执行ping操作(让我们说:google.com),以便检查两件事:
1.-我的服务器在线(或不在线)2.-客户端没有互联网连接。
使用以下例程可ping通到服务器:
function hostReachable(host) { // Handle IE and more capable browsers
var xhr = new ( window.ActiveXObject || XMLHttpRequest )( "Microsoft.XMLHTTP" );
var status;
// Open new request as a HEAD to the root hostname with a random param to bust the cache
xhr.open( "GET", "//" + host + "/?rand=" + Math.floor((1 + Math.random()) * 0x10000), false);
// Issue request and handle response
try { xhr.send(); return (xhr.status >= 200 && xhr.status < 300 || xhr.status === 304); }
catch (error) { return false; }
}
}
function check() {
if (!hostReachable(window.location.host)) {
if (!hostReachable('www.google.co.ve')) {
alert('No se pudo establecer conexión con el sistema. Revise su conexion a internet.');
} else {
alert('Existe un problema con el sistema. Por favor contacto a los administradores.');
}
} else {
console.log('Connected...');
}
}
check();
这样做是为了检查google.com是否存在跨域问题。 所以问题很简单。 有没有办法检查像这样的互联网连接?
如果您发送跨域请求,而您要对其进行ping操作的服务器不接受该请求,则它们将发回访问被拒绝的状态。 我认为这是403
,但是您需要检查firebug / chrome开发工具以查看实际的代码是什么。 然后,如果您获得该代码,则至少知道发送了请求并收到了响应。
- 编辑 -
这是我在JSFiddle上的意思的示例 。 请务必检查Chrome开发工具/萤火虫上的网络请求。 它正在向www.google.com
发送请求,并在响应中收到404
状态代码。
旁注:事实证明,拒绝跨域请求时,不同的服务器会发送不同的代码。 看来401
, 403
和404
是最流行的。 对于将来遇到此问题的任何人,您将需要检查您要针对的站点发回的代码。
您可以尝试向Google或其他一些高度可靠的CDN请求JavaScript资源。 它不会受到跨域限制。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.