来自浏览器的延迟/ Ping测试

时间:2012-08-20 09:53:47

标签: java php javascript flash

我想检查从浏览器到服务器的ping。

Ping / Latency不应该来自Server而是来自Client的Machine。

我见过像Pingtest.net这样的网站,所以可以通过浏览器进行操作。

任何语言都可以。

服务器ping也可以通过普通shell命令ping之外的UDP数据包进行测试。

我该怎么办? ?

3 个答案:

答案 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');
    }
  }