JavaScript NTP时间

Dav*_*vid 10 javascript time jquery ntp

我正在写一个计数脚本,它计算旧日期和今天之间的时间.
一切顺利,直到我在错误的日期的计算机上测试并看到结果.
所以我找到了一种通过http://json-time.appspot.com/time.json获取NTP时间的方法.
问题是我需要每毫秒的当前时间,因为我想要计算毫秒但是每隔几毫秒就不可能向NTP服务器发送请求.
这是一些示例代码,用于查看我正在撰写的内容

            var today;
        $(document).ready(function(){

            $.data = function(success){
                $.get("http://json-time.appspot.com/time.json?callback=?", function(response){
                    success(new Date(response.datetime));
                }, "json");
            };
        });

        function update(){
            var start = new Date("March 25, 2011 17:00:00");
            //var today = new Date();
            $.data(function(time){
                today = time;
            });
            var bla = today.getTime() - start.getTime();
            $("#milliseconds").text(bla);
        }

        setInterval("update()", 1);
Run Code Online (Sandbox Code Playgroud)

Pis*_*3.0 10

首先,JS调度程序具有一定的粒度 - 也就是说,您可以请求小于20毫秒的间隔,但它不会立即触发 - 您可以看到的是每20毫秒触发的20个事件.

其次,即使你可以,这也不是一个好主意:你将每秒每台使用此脚本的计算机发出1000个请求.即使客户端及其连接可以处理这个问题,它也就是JSON服务器的DDoS.

你能做的是:

  • 从JSON-NTP获得时间(一次),这将是一个日期
  • 得到当地时间(一次),这将是一个日期
  • 计算NTP和本地时间(一次)之间的差异,这可能是本地时间关闭的毫秒数
  • 对于每次计算,考虑差异