0

ペニーオークションサイトをコーディングしていて、カウントダウンの問題に遭遇しました。開始時間はマシンによって少し異なるようです (通常は約 1 秒ですが、場合によっては 2 秒または 3 秒の差があります)。これは入札者にとって明らかに大きな問題です。答えの大部分は単にネットワークの遅延だと思いますが、(a) 他の要因が関係しているのでしょうか? (b) 何らかの方法でネットワークの遅延を修正する方法はありますか?

私は毎秒 Ajax 呼び出しを介してサーバーにヒットしようとしましたが、それは十分に機能します (ただし、常に少しラグがあります) が、サーバー上で困難になるため、そうする必要はありません。

JavaScript の開発は私の得意分野ではないので、ヒントやフィードバックをいただければ幸いです。

サーバー上で生成された私のコードは次のとおりです

jQuery(document).ready(function() {
    var aid = " . $aid . ";
var loadTime = Math.floor(jQuery.now()/1000);
//alert(loadTime);
serverTime = " . time() . ";
var clockDiff = loadTime - serverTime;
var diff;
auctionExpirationValue" . $aid . " = " . $expiry . ";
    var newServerTime = setInterval(function() {
         diff = window['auctionExpirationValue' + aid] - Math.floor((jQuery.now())/1000) + clockDiff;
         diff_string = parse_countdown(diff);
         jQuery('#auction-expiry').html(diff_string);
    },1000);
});

clockDiff 変数は、ユーザーのマシンとサーバーの間のクロックの違いを考慮します。明らかに、1 台のマシンが進んでいるか遅れている場合、ユーザーはカウントダウンで異なる値を確認します。

ご覧のとおり、コードは毎秒ループし (または、ほぼ毎秒、正確ではないことは理解しています)、現在とオークションの有効期限との差を計算し (clockDiff で補正)、フォーマットして表示します。ものすごく単純。uctionExpirationValue*** グローバル変数は、オークションの有効期限をタイムスタンプとしてローカルに保存するために使用されます。

私のクライアントはまた、元の不一致に加えて、彼の iPad ではカウントダウンが少しずれることがあると私に知らせてきました。そこの説明は?

4

0 に答える 0