2012-01-22 41 views
10

ゲームのようなPingをJavascriptで作成したいのですが、これはCounter Strikeのゲームと同じです。私はサーバー(MySQL)へのAJAX呼び出しを行い、実行時間を計算したいが、間違って計算しているか、またはpingの誤った考え方をしている。ここに私が今まで持っているコードはあります:JavaScriptまたはjQueryで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に行って、データベースに接続し、いくつかの行を選択し、いくつかのデータを返すことは非常に速いようです。はい、これはローカルホスト上にあるので、速くなければなりませんが、これは速いことを意味しますか? FPSでそれを計算すべきか、あるいはserver.phpを呼び出すだけですか?

+0

を取りました。 'server.php'からいくつかの出力を試してみてください。okと答えたらokです:)もしあなたがChromeやFirebugを使っているなら、ajaxのリクエスト時間を見てください。 –

+1

キャッシングを防ぐためにWebサーバーがserver.phpにヘッダーを送信していることを確認してください。 –

+0

ありがとうございました。私は調査し、クロムは私の計算を1ms下回ってくれました。これは大丈夫です。 – Kivylius

答えて

7

下の応答時間は、デフォルトではcacheプロパティがtrueに設定されているので、それがサーバーに行くたびにキャッシュしない

var ping = new Date; 

$.ajax({ type: "POST", 
    url: "server.php", 
    data: {....}, 
    cache:false, 
    success: function(output){ 

     ping = new Date - ping; 

    } 
}); 
2

あなたは計算することができなくなりますように、falseに設定していますクライアント側(Java、Flash、またはWebソケットをカウントしない)の正確な待ち時間を計算するには、サーバーが計算して応答の値を返す必要があります。実数は100msに近いながら、P

接続状態の早い時間はstackoverflow.comのために私300ms取得します:localhostの0ms以外を取得すると、これの十分な証拠がなければなりません。完全な応答(a.DONE)を待っている

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); 

は、私はそれは大丈夫であることを推測949ms

関連する問題