我想检查从浏览器到服务器的 ping。
Ping/延迟不应该来自服务器,而是来自客户端的机器。
我看过像 Pingtest.net 这样的网站,所以可以从浏览器中完成。
任何语言都可以。
服务器 ping 也可以通过普通 shell 命令 ping 以外的 UDP 数据包进行测试。
我该如何进行。?
我想检查从浏览器到服务器的 ping。
Ping/延迟不应该来自服务器,而是来自客户端的机器。
我看过像 Pingtest.net 这样的网站,所以可以从浏览器中完成。
任何语言都可以。
服务器 ping 也可以通过普通 shell 命令 ping 以外的 UDP 数据包进行测试。
我该如何进行。?
尝试对 JavaScript 使用XMLHTTPRequest()。目标是制作大约 10 个对象并将它们放在一个数组中。然后在每一个中使用 onreadystatechange。对于其中的函数,使用状态 1 启动计时器,使用状态 3 完成计时器。使用对象 Date() 来获取时间。
这就是解决这个问题的全部想法。如果您需要更多,只需评论我的答案,我会尽力使其更完整和“恶作剧”。
假设您知道如何用 javascript 编程,这是一个可能的解决方案的想法:您首先创建一个数组,您将在每个位置插入一个 XMLHTTPRequest() 的实例。然后,您将创建一个返回函数的函数,其中:
外部函数将为“当前”请求保存某种标识,包括对实例的引用。该功能应该立即执行。
内部函数应该用于执行状态并知道何时“启动”计时器以及何时“停止”计时器。注意打开连接并将标头发送给所有人,等待得到答案,最后注册你得到的时间。做一些数学运算,你就会得到 ping。
这就是这背后的全部想法。祝你好运!
<script type="text/javascript">
try {
netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead");
} catch (e) {
alert("Permission UniversalBrowserRead denied.");
}
var req = new XMLHttpRequest();
req.open('GET', 'http://www.mozilla.org/', false);.
req.send();
if(req.status == 200) {
alert(req.responseText);
}
试试这个——我调用了一个空白页面网站,这样它就不会计算加载时间,而是作为 ping 时间。仅供参考 - 它仍然不会与通过运行 ping 命令测量的 ping 时间相同。
function loadXMLDoc() {
var xhttp = new XMLHttpRequest();
var ping = new Date;
xhttp.open("GET", "http://cors-anywhere.herokuapp.com/blank.org/", false);
xhttp.setRequestHeader('Cache-Control', 'no-cache');
xhttp.send();
if(xhttp.status == 200) {
ping = new Date - ping;
console.log('Ping ' + ping + 'ms');
}
}