我正在寻找一个可用于测试互联网是否正常的 URL。
我可以使用 1x1 像素测试我的服务器(下面推荐),但是如何测试互联网是否正常,但我的服务器已关闭。
在我的应用程序中,我可以使用有关本地网络接口(interface)(wifi AP)的这两个事件,但不能使用有关互联网(网关、dns、上游网络)的事件:
window.addEventListener('online', onNetworkUp, false);
window.addEventListener('offline', onNetworkDown, false);
所以,我可以“在线”,但无法连接到互联网。
为了测试“互联网”,我可以 ping 我的 API 服务器,但也想检查其他可能有更好 SLA 的地方。例如。谷歌、亚马逊等。
最不粗鲁的方法是什么?是否有一个 URL 期望以这种方式使用?
迈克
最佳答案
检查您是否连接到互联网的最简单方法是使用navigator.onLine
:
if (navigator.onLine) {
// you are online... do something
} else {
// you're not online
}
但是,这不适用于您的本地服务器,因此我第二喜欢的方法(因为有很多方法可以做到这一点)是使用任何网络请求(例如图像)添加 onerror
事件:
<img src='http://www.example.com/singlepixel.gif' onerror='offline();' />
<script>
function offline() {
alert('Internet offline!');
}
</script>
显然,您应该向一个小图像(例如 1x1px
)发出请求,这样当您连接到互联网时,加载时间就不会太长。
或者如果你想使用纯 Javascript:
function internetON() {
var xhr = new XMLHttpRequest();
xhr.open('GET', 'http://www.example.com/singlepixel.gif', false);
xhr.send();
return xhr.status === 200;
}
if (internetON()) {
// you are online... do something
} else {
// you're not online
}
关于javascript - 测试互联网(谷歌、AWS 等)是否可访问的最粗鲁的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26409174/