如何在JavaScript或jQuery中ping?

我想在Javascript中创建类似游戏的ping,就像游戏Counter Strike一样。 我正在对服务器(MySQL)进行AJAX调用,并且想要计算所花费的时间,但我要么计算错误,要么错误地想要ping。 这是我到目前为止的代码:

var time_stamp = new Date; $.ajax({ type: "POST", url: "server.php", data: {....}, success: function(output){ ping = new Date - time_stamp; } }); // btw, this code works fine now for ping 

问题是有时我得到0ms或3ms。 这个可以吗? 转到server.php ,连接到数据库,选择一些行并返回一些数据似乎非常快。 是的,这是在localhost上,所以它应该很快,但这是否意味着这么快? 我应该在FPS计算它,还是每次调用server.php

响应时间较短是因为默认情况下cache属性设置为true,将其设置为false以便每次进入服务器而不是缓存

 var ping = new Date; $.ajax({ type: "POST", url: "server.php", data: {....}, cache:false, success: function(output){ ping = new Date - ping; } }); 

您将无法在客户端计算准确的延迟(不包括java,flash或websockets),您需要服务器计算它并在响应中返回值。 为localhost获取0ms以外的任何内容应该足以certificate这一点:P

连接状态的最早时间为stackoverflow.com获取300ms ,而实数接近100ms

 var a = new XMLHttpRequest(); a.onreadystatechange = function () { if (a.readyState === a.HEADERS_RECEIVED) { a.abort(); console.log(new Date - abc); } }; var abc = new Date; a.open("GET", "/"); a.send(null); 

等待完整的回复( a.DONE )花了949ms