一个简单的客户端时钟和服务端同步
2011-07-19 13:50
441 查看
思路很简单,页面Load后 利用ajax读取服务器时间,将该时间作为客户端基准时间,再利用每隔1000ms对时间进行累计,另外,为了减少各方面带来的误差,可定期从服务器读取时间,如下面代码中的checkFlag的判断-600s后重新从服务端获取,当然这里还有网络消耗的时间,无法避免
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title></title> <script src="Scripts/jquery-1.4.1.js" type="text/javascript"></script> </head> <body> <div id="divTimes"> </div> </body> </html> <script language="javaScript"> <!-- // var clientTime = new Date(); var serverTime = { h: clientTime.getHours(), m: clientTime.getMinutes(), s: clientTime.getSeconds() }; var serverTimeStr = { h: clientTime.getHours().toString(), m: clientTime.getMinutes().toString(), s: clientTime.getSeconds().toString() }; // var checkFlag = 0;//为了减小误差,可以设置该变量,比如当checkFlag到达600时,重新从服务器取得时间 function formatServerTime() { // checkFlag++; if (serverTime.s < 59) {//60s进制 serverTime.s++; } else { serverTime.s = 0; if (serverTime.m < 59) {//60m进制 serverTime.m++; } else { serverTime.m = 0; if (serverTime.h < 23) {//24h进制 serverTime.h++; } else { serverTime.h = 0; } } } if (serverTime.h < 10) serverTimeStr.h = "0" + serverTime.h.toString(); else serverTimeStr.h = serverTime.h.toString(); if (serverTime.m < 10) serverTimeStr.m = "0" + serverTime.m.toString(); else serverTimeStr.m = serverTime.m.toString(); if (serverTime.s < 10) serverTimeStr.s = "0" + serverTime.s.toString(); else serverTimeStr.s = serverTime.s.toString(); $("#divTimes").html(serverTimeStr.h + ":" + serverTimeStr.m + ":" + serverTimeStr.s); // if (checkFlag>600){ // checkFlag=0; // getServerTime(); // return; // } // else window.setTimeout("formatServerTime()", 1000); } function getServerTime() { var myurl = "gst.aspx?rnd=" + Math.random();//该处为获取服务器时间的地址,返回json数据,此处格式为 [{"h":10,"m":25,"s":9}] $.ajax({ type: "post", url: myurl, dataType: "json", success: function (data, textStatus) { if (typeof data[0] == "object") { serverTime = data[0]; formatServerTime(); } }, error: function (e) { } }); } jQuery(document).ready(function () { getServerTime(); }); --> </script>
相关文章推荐
- php创建一个最简单的soap服务端与客户端测试的实例
- 一个简单的完成端口(服务端/客户端)类
- IOCP入门详解(重加文章:一个简单的完成端口(服务端/客户端)类)
- 一个简单的TCP客户端、服务端会话程序(C#)
- 一个简单的TCP客户端、服务端会话程序(C#)
- Java网络编程(一)- 一个简单的服务端/客户端应用程序
- 一个简单的json服务端和客户端的例子
- 一个简单的SOAP服务端和一个客户端
- 分享一个PHP写的简单webservice服务端+客户端
- 一个简单的BitTorrent客户端实现(三):同步事件分离器
- Java网络编程(一)- 一个简单的服务端/客户端应用程序
- 一个最简单的SOAP客户端与服务端测试实例(主要是该例子一个类中写了多个方法)
- 随手写了一个简单的socket服务端和客户端
- 编写一个简单的TCP服务端和客户端
- 通过一个简单的例子看服务端的启动过程以及客户端与服务端的连接过程(Netty 4.0.18)
- 一个PHP写的简单webservice服务端+客户端
- python---》客户端与服务端的基础(做一个简单的客户端与服务端)
- java中自己实现一个服务端对应多个客户端的简单代码
- 一个简单的直播 IOS客户端 + 服务端
- 一个简单的socket服务端和客户端程序:客户端发送数据给服务端,服务端接收到数据后再给客户端发送数据