問題は私が直面している問題です:イベントを引き起こすN個のIPadがあります。イベントを最初にトリガーしたサーバー側でどのように知るか。サーバー側で使用される言語は、PHPとクライアントサイドJavaScript(JQuery)です。最大の問題は待ち時間なので、AJAXポーリングを送信するだけでうまくいきません。なぜなら、jより前にボタンを押すことができますが、待ち時間のためにサーバがjリクエストを受け取ることができるからです。また、プレス時間を節約することは、IPadがミリ秒以下の単位に同期されないので最適ではない。たぶん、私はいくつかのアイデアを得ることができるこれを扱ういくつかの種類のプロトコルがありますか?複数のクライアントの同期
答えて
ここでは、待ち時間の確認に使用できる2つの方法を示します。側を(要求がサーバーに到着したとき)
要求到着時刻がサーバーの時刻にする必要があり、待ち時間 -
あなたは、ユーザーの要求到着時刻要求=要求到着時間の
実際の時間を計算することができますユニットを同期させる必要はありません。クライアントからの要求データとともにレイテンシデータを取得する必要があります。平均待ち時間をポーリングして計算するクライアント側スクリプトを作成する必要があります。
第1の方法は、taken from a question here in stackoverflowである。これはajaxを使います。これは私がこれまでに検索した中で最も正確で、実際のものから10ms以内のものです。何それがないと、それはあなたのサーバーのページ(例では「/」のURLは、Webルートである)
利点(AJAX経由)を呼び出している:我々は、返信後にイベントを発生jQueryのAJAX
.success()
を使用します応答データをロードする前に受信されます(要求サイズは関係ありません)。欠点:ajaxはクロスドメイン(援助なし)ではありません。しかし、あなた自身のサーバーを持っているなら、問題はありません。
もう一つはtaken from hereと私はそれを少し修正しました。これはもともとサーバーがまだ存在するかどうかをテストするサーバーテスターとして作成されたものです。
利点:クロスドメイン(我々は
img = new Image()
"画像プリローダ" メソッドを使用)欠点:インターネットの速度。コンテンツがロードされた後に起動するのは
.onLoad()
なので、ペイロードのサイズ(この場合は画像)とインターネットの速度が重要になります。
画像サイズに応じて、約200-400msのずれがあります。
//this is a static class. values are preserved. do resets before and after use.
var ping = {
//the sample image. make it as small as possible like 1 x 1 px black and white.
//we are only testing ping, not download times
//replace with your own image on your server since this link will die soon
picture: "http://205.196.122.17/vh8cvmdtgfsg/8nsd22kphe1fz5w/spacer.bmp",
//placeholder for test subject
pictureFrame: null,
//timer
timer: null,
reset: function(){
//clear timeouts and timer
clearTimeout(ping.timer);
ping.timer = null;
//clear the picture frame
ping.pictureFrame = null;
},
//start ping function
init: function() {
//reset
ping.reset();
//get time before request
var preSess = new Date();
var preTime = preSess.getTime();
//append current timestamp so request won't be from cache
var pictureUri = ping.picture + "?time=" + preTime;
//create placeholder
ping.pictureFrame = new Image();
ping.pictureFrame.onload = function() {
//get time after load
var postSess = new Date();
var postTime = postSess.getTime();
var requestTime = postTime - preTime;
alert("Ping took "+requestTime+"ms");
//reset
ping.reset();
};
//triggers loading
ping.pictureFrame.src = pictureUri;
//set maximum timeout (in ms) before we declare domain not there
ping.timer = setTimeout("ping.failed()", 60000);
},
//time-out reached
failed: function() {
//reset
ping.reset();
//alert what happened
alert("Ping took too long");
}
};
ping.init();
- 1. 非同期シングルサーバ複数のクライアントがC#
- 2. オブジェクト複数のクライアント間の同期化アルゴリズム
- 3. Nettyクライアントで複数の非同期リクエストを送信する
- 4. TCP - クライアントの同期
- 5. 複数のオーディオキューの同期
- 6. 複数のMediaItemを同期
- 7. 複数の非同期テストと期待
- 8. クライアント間のレルムの同期
- 9. サーバーとの同期クライアントが
- 10. 非同期RESTクライアント
- 11. Node.jsサーバー上の複数のクライアント間でデータを同期する方法
- 12. RMI:サーバに複数のクライアントがアクセスしたときの適切な同期
- 13. 複数のマシンでのOutlookの同期
- 14. シングルスレッドでの複数のタスクの同期
- 15. Googleドライブにファイルを同期する複数のクライアントを持つAppFolder
- 16. 複数のクライアントで同期してYouTube動画を再生する方法は?
- 17. 複数のサーバー間での同期化?
- 18. 複数のブラウザのWindows同期
- 19. 複数のカスタムビューの同期スクロール
- 20. Emacs-Diredの複数の非同期シェルコマンド?
- 21. 複数のインスタンスのサーブレット同期
- 22. Node.js非同期の複数のクエリ
- 23. cpp非同期サーバのgRPC複数サービス
- 24. 複数のタブと同期するSocket.io
- 25. 複数のマシン間で同期実行
- 26. 複数のデバイス間でタイムスタンプを同期
- 27. 複数のスリックスライダーを一緒に同期
- 28. 複数画像の非同期ダウンロード
- 29. 複数の非同期Webクライアントコール(シルバー4)
- 30. 複数のポストxmlデータをグーグルと複数の非同期リクエスト
javascriptの日付を作成し、リクエストとともに送信できますか?単一のタイムゾーンに同期する必要がありますが、十分に単純なようです。 – mrtsherman
このリアルタイムのタイミングを必要とする同期を希望しますか? – Joseph
@mrtsherman各デバイスの正確な時刻設定を保証することはできません。あなたが正しい時間を表示している限り、デバイスがどのタイムゾーンにいるか気にしません。(強制的な時間同期メカニズムのようなものがない限り) – Joseph