クライアント クロックとサーバー クロックの差を取得する方法を見つけています。
これまで、次のアプローチを試してきました。
収集:
- クライアント要求時間
- サーバー時間
- クライアント応答時間
問題は、サーバーに到達するリクエストとクライアントに到達するレスポンスの間に不明な遅延が発生することです。
JavaScript と PHP を使用したこのスキームの実装を次に示します。
time.js
var request = new XMLHttpRequest();
request.onreadystatechange = readystatechangehandler;
request.open("POST", "http://www.example.com/sync.php", true);
request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
request.send("original=" + (new Date).getTime());
function readystatechangehandler() {
var returned = (new Date).getTime();
if (request.readyState === 4 && request.status === 200) {
var timestamp = request.responseText.split('|');
var original = + timestamp[0];
var receive = + timestamp[1];
var transmit = + timestamp[2];
var sending = receive - original;
var receiving = returned - transmit;
var roundtrip = sending + receiving;
var oneway = roundtrip / 2;
var difference = sending - oneway; // this is what you want
// so the server time will be client time + difference
}
}
同期.php
<?php
$receive = round(microtime(true) * 1000);
echo $_POST["original"] . '|';
echo $receive . '|';
echo round(microtime(true) * 1000);
?>
このアプローチでも、50〜500ミリ秒のエラーが発生します。遅延が大きい場合、エラーはさらに大きくなります。
しかし、「adtruth」という名前の会社が、時計の時間に基づいてデバイスを区別できたとどのように主張しているのか疑問に思います。彼らはそれを「時間差分リンク」と呼んでいます AdTruth スタイルのデバイス認識の鍵は、時間差分リンクのための TDL と呼ばれる特許取得済みの技術です。何十億もの接続されたデバイスの中に同じ構成の何千ものデバイスがあるかもしれませんが、時計が同じ時刻に設定されているものは 2 つとありません。41st Parameter と AdTruth の創設者である Ori Eisen 氏は次のように述べています。
http://www.admonsters.com/blog/adtruth-joins-w3c-qa-ori-eisen-founder-and-chief-innovation-officer
これが彼らの「時間差分リンク」特許へのリンクです