Use server time in 90-timers.js for more accurate timers
authorMarius Gavrilescu <marius@ieval.ro>
Fri, 17 Apr 2015 21:09:33 +0000 (00:09 +0300)
committerMarius Gavrilescu <marius@ieval.ro>
Sat, 18 Apr 2015 08:52:00 +0000 (11:52 +0300)
js/90-timers.js

index d439299ebe6d562f3d47cab5883f4f986589ce34..e03ae08dcf3171a13ad872225f1a94da512d0efa 100644 (file)
@@ -1,8 +1,10 @@
+let offset = 0;
+
 function update_timer(timer){
        var start = parseInt(timer.dataset.start);
        var stop  = parseInt(timer.dataset.stop);
        var value = parseInt(timer.dataset.value);
-       var now   = Math.floor(Date.now() / 1000);
+       var now   = Math.floor(Date.now() / 1000) + offset;
 
        var left = stop - now;
        var total = stop - start;
@@ -23,7 +25,17 @@ function update_timer(timer){
        }
 }
 
-$(() => $('.timer').each(item => {
-       update_timer(item);
-       setInterval(() => update_timer(item), 1000);
-}));
+$(() => {
+       $('.timer').each(item => {
+               update_timer(item);
+               setInterval(() => update_timer(item), 1000);
+       });
+       let xhr = new XMLHttpRequest();
+       xhr.open('HEAD', '/');
+       xhr.onload = () => {
+               let srvtime = Date.parse(xhr.getResponseHeader('Date'));
+               offset = Math.ceil((srvtime - Date.now()) / 1000);
+               console.log("Offset from server: " + offset);
+       };
+       xhr.send();
+});
This page took 0.011191 seconds and 4 git commands to generate.