Znajduję sposób, aby uzyskać różnicę między zegarem klienta i zegarem serwera.Porównanie zegara urządzenia klienckiego z zegarem serwera dokładnie do milisekund
Do tej pory próbowałem następujące podejście.
wchłaniania:
- czas żądanie klienta
- czas serwera
- czas reakcji klient
problemem jest dostać nieznanego opóźnienia między żądaniem dotrzeć serwer i odpowiedzi do osiągnięcia klienta.
Oto realizacja tego programu za pomocą JavaScript i 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
}
}
Sync.php
<?php
$receive = round(microtime(true) * 1000);
echo $_POST["original"] . '|';
echo $receive . '|';
echo round(microtime(true) * 1000);
?>
nawet z takim podejściem i uzyskać 50-500 błąd ms . Jeśli opóźnienie jest wysokie, błąd będzie większy.
Ale zastanawiam się, jak firma o nazwie "adtruth" twierdzi, że była w stanie odróżnić urządzenia na podstawie czasu zegarowego. nazywają to "Łączeniem Różnic Czasu". Kluczem do rozpoznawania urządzeń w stylu AdTruth jest opatentowana technologia TDL, służąca do różnicowania czasu. Podczas gdy w miliardach podłączonych urządzeń mogą znajdować się tysiące z tą samą konfiguracją, żadne dwa zegary nie będą ustawione w tym samym czasie - przynajmniej nie wtedy, gdy spadnie do milisekundy. Mówi Ori Eisen, założyciel 41. parametru i AdTruth: "Odbieramy te różne znaczniki czasu i porównujemy je z zegarem głównym serwera .Jeśli jest jakakolwiek wątpliwość, TDL jest łącznikiem".
http://www.admonsters.com/blog/adtruth-joins-w3c-qa-ori-eisen-founder-and-chief-innovation-officer
Oto link do ich "Czas różnica łączącego" patent
http://www.google.com/patents/US7853533
Całkowicie zignorowałem tę odpowiedź w tym czasie. Naprawdę ma to sens. +1 dla ciebie –