新闻动态

如何通过轮询方式实现获取服务器时间的方法

发布日期:2021-07-17 17:33 | 文章来源:YINGSOO

  【内容声明】本文部分内容来源互联网,仅作参考!如需咨询“如何通过轮询方式实现获取服务器时间的方法”等有关服务器、云主机租用、托管、配置、价格问题,请免费咨询YINGSOO客服,享受1v1贴心服务!

  【新品推荐】印度尼西亚物理服务器特价 | 日本物理服务器特价 | 香港站群服务器特价

  【猜你喜欢】俄罗斯vps的优势,俄罗斯vps速度怎么样?

如何通过轮询方式实现获取服务器时间的方法

  如何通过轮询方式实现获取服务器时间的方法?能用 webscoket 进行前后通信当然更好,数据时效也更高。但如果用到轮询(即 settimeinterval 定时刷新接口来获取数据)的时候,我们需要对时间稍稍进行一下处理,以尽可能的接近服务器时间。

  处理方法非常简单,就是拿到的服务器当前的时间,加上我们本地的当前时间和服务器当前时间的时间差

  //单独获取活动时间

  getservicetime() {

  let servicetimer = setinterval(function() {

  this.$axios.get(……,{})

  .then((response) => {

   endtime = ……

   starttime = ……

   currenttime = ……

  },(error) => {});

  },6000)

  }

  //上面的接口以轮询的方式去获取活动开始时间、结束时间、服务器当前时间,轮询时间间隔为 n 秒,此处 n 是 6,下面是倒计时的时间处理

  let timmer = setinterval(()=>{

  //从单独接口获取到服务器当前时间 currenttime,活动开始时间 starttime,活动结束时间 endtime

  let localtime = new date().gettime()//本地当前时间,在本地自己 new 得到

  let diftime = localtime - currenttime//接口开始传输时的服务器时间,和拿到接口数据时的本地时间,之间的差值

  let cutdowntime = endtime - localtime + (diftime / n)

  if(self.chazhi>0){

  let day = math.floor(self.chazhi/86400);

  let hour = math.floor((self.chazhi/3600)%24);

  let min = math.floor((self.chazhi/60)%60);

  let sec = math.floor(self.chazhi%60);

  hour = hour < 10 ? "0" + hour : hour;

  min = min < 10 ? "0" + min : min;

  sec = sec < 10 ? "0" + sec : sec;

  if(day > 0){

   reuturn `距离活动结束还有${day}天${hour}小时${min}分${sec}秒`;

  } else if(day <= 0 && hour > 0 ){

   return `距离活动结束还有${hour}小时${min}分${sec}秒`;

  } else if(day <= 0 && hour <= 0){

   reuturn `距离活动结束还有${min}分${sec}秒`;

  }

  }else{

  clearinterval(timer);

  return '活动结束'

  }

  },1000)

  有些童鞋可能会说,你这里拿了本地时间做参考,如果本地时间不准呢?或者有人恶意修改了本地时间呢?那我们得到的岂不是不准确?或者说是错误的时间?

  恶意修改,确实没有办法。我们只能无条件的信任本地时间,拿它来做参考,处理这个活动倒计时。好在现在的移动端,时间都是根据时区自动获取的,不能人为修改,再加上现在 pc 互联向 移动 互联的迁徙,大部分的活动倒计时都是在移动端展现的,这应该也是我们很少在 pc 页面上看到有倒计时活动的原因吧。

  我们更少看到有哪个电商网站,pc 端和 移动端 同时有倒计时活动吧?

  也可能有人会发出疑问:这个时间差需要计吗?只获取一次服务器时间,然后直接在本地倒计时岂不是更好?本着精益求精的态度,我们也做了试验,在 pc 端 轮询获取服务器时间,移动端只获取一次服务器时间,做了对比。发现在最开始的一段时间(大概20分钟)里,确实是没有问题,或者说时间差感觉不到。过了 20 分钟以后,会出现几秒的时间差,再往后两者时间差越来越大。思考 了一下,在移动端只获取一次服务器时间,依靠手机的本地倒计时,这个倒计时就依赖于手机自身的性能处理了。

  爆款产品:香港服务器租用去首页注册领券!YINGSOO最新推出Swarm物理节点服务器Swarm母鸡服务器Swarm Bzz挖矿教程【图文教程】Swarm Bzz挖矿教程【视频教程】,《swarm bzz挖矿资料大全》,Swarm Bee节点租用请咨询YINGSOO客服

版权声明:本站文章来源标注为YINGSOO的内容版权均为本站所有,欢迎引用、转载,请保持原文完整并注明来源及原文链接。禁止复制或仿造本网站,禁止在非www.yingsoo.com所属的服务器上建立镜像,否则将依法追究法律责任。本站部分内容来源于网友推荐、互联网收集整理而来,仅供学习参考,不代表本站立场,如有内容涉嫌侵权,请联系alex-e#qq.com处理。

相关文章

实时开通

自选配置、实时开通

免备案

全球线路精选!

全天候客户服务

7x24全年不间断在线

专属顾问服务

1对1客户咨询顾问

在线
客服

在线客服:7*24小时在线

客服
热线

400-630-3752
7*24小时客服服务热线

关注
微信

关注官方微信
顶部