如何在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