php – 将Javascript时钟与服务器时钟同步
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了php – 将Javascript时钟与服务器时钟同步,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1557字,纯文字阅读大概需要3分钟。
内容图文
背景
我正在创建一个AJAX聊天系统.它看起来像这样:
Mike – hi Jane – 5 minutes ago
Jane – hi Mike – 4 minutes ago
Mike – how’s it going – 3 seconds ago
Jane – I’m doing good – 1 second ago
Javascript每分钟轮询服务器,服务器响应10条最新消息.附加到每个消息的是Unix时间戳(PHP time()). Javascript负责将用户当前拥有的缓冲消息与此新服务器响应合并.消息的交错和“X time ago”消息的准确性取决于Javascript时钟与服务器时钟同步的程度.
题
你如何准确地将Javascript时钟与服务器时钟同步?以下是我到目前为止的情况.我想让它更准确.目前它没有考虑进行同步的Ajax的往返时间.我如何知道发送,处理和接收的往返比例?另外,你如何处理时钟晶体被破坏的用户 – 例如:格林威治标准时间晚上7点20分,但他们的时钟实际上是格林威治标准时间下午7:15?
Clock = {
serverOffset = 0;
synch: function() {
new Ajax.Request(
'/getServerTime.php', {
onSuccess: function(transport) {
this.serverOffset = parseInt(transport.responseText) -
new Date().getTime() / 1000;
}
}
);
},
getServerTime: function(myTime) {
if (typeof(myTime) === 'undefined') {
myTime = new Date().getTime() / 1000;
}
return myTime + this.serverOffset;
},
serverToMyTime: function(serverTime) {
return serverTime - this.serverOffset;
}
}
解决方法:
正如我在this answer中解释的那样,你的精确程度是有限的 – 本质上,任何小于请求往返时间的时钟偏差都是不可检测的.如果您确实需要时间尽可能精确,请为服务器创建一个特殊的请求类型,以获取时间,并尽可能快地进行往返.
但是,您可以识别本地时钟明显疯狂的浏览器,因为观察到的服务器时间不会落在请求的本地开始和结束时间之间.由于您无法将其收紧得太远,只需在本地请求[start,end]间隔内选择一个任意时间,并将其视为等同于接收的服务器时间.
内容总结
以上是互联网集市为您收集整理的php – 将Javascript时钟与服务器时钟同步全部内容,希望文章能够帮你解决php – 将Javascript时钟与服务器时钟同步所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。