我想检查从浏览器到服务器的ping。
Ping / Latency不应该来自Server而是来自Client的Machine。
我见过像Pingtest.net这样的网站,所以可以通过浏览器进行操作。
任何语言都可以。
服务器ping也可以通过普通shell命令ping之外的UDP数据包进行测试。
我该怎么办? ?
答案 0 :(得分:1)
尝试将XMLHTTPRequest()用于javascript。目标是制作大约10个对象并将它们放在一个数组中。 然后在每一个中使用onreadystatechange。对于其中的功能,使用状态1启动计时器和状态3以完成计时器。使用对象Date()来获取时间。
这就是解决问题的全部理念。如果你需要更多,只需评论我的答案,我会尽量让它更完整和“糟糕”。
假设您知道如何使用javascript编程,这是一个可能的解决方案的一个想法:
首先创建一个数组,您将在每个位置插入XMLHTTPRequest()的实例。
然后,您将创建一个返回函数的函数,其中:
外部函数将为“当前”请求保存某种标识,包括对实例的引用。该功能应该立即执行
内部函数应该用于执行状态并知道何时“启动”计时器以及何时“停止”计时器。
小心打开连接并将标题发送给所有人,等待得到答案,最后注册你得到的时间。做一些数学计算,你就得到了ping。
这就是这背后的整个想法。祝你好运!
答案 1 :(得分:0)
<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);
}
答案 2 :(得分:0)
尝试一下- 我调用了一个空白页网站,以便它最终不会计算加载时间,而将其用作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');
}
}