如何通過(guò)輪詢方式實(shí)現(xiàn)獲取服務(wù)器時(shí)間的方法
【內(nèi)容聲明】本文部分內(nèi)容來(lái)源互聯(lián)網(wǎng),僅作參考!如需咨詢“如何通過(guò)輪詢方式實(shí)現(xiàn)獲取服務(wù)器時(shí)間的方法”等有關(guān)服務(wù)器、云主機(jī)租用、托管、配置、價(jià)格問(wèn)題,請(qǐng)免費(fèi)咨詢YINGSOO客服,享受1v1貼心服務(wù)!
【新品推薦】印度尼西亞物理服務(wù)器特價(jià) | 日本物理服務(wù)器特價(jià) | 香港站群服務(wù)器特價(jià)
【猜你喜歡】俄羅斯vps的優(yōu)勢(shì),俄羅斯vps速度怎么樣?

如何通過(guò)輪詢方式實(shí)現(xiàn)獲取服務(wù)器時(shí)間的方法?能用 webscoket 進(jìn)行前后通信當(dāng)然更好,數(shù)據(jù)時(shí)效也更高。但如果用到輪詢(即 settimeinterval 定時(shí)刷新接口來(lái)獲取數(shù)據(jù))的時(shí)候,我們需要對(duì)時(shí)間稍稍進(jìn)行一下處理,以盡可能的接近服務(wù)器時(shí)間。
處理方法非常簡(jiǎn)單,就是拿到的服務(wù)器當(dāng)前的時(shí)間,加上我們本地的當(dāng)前時(shí)間和服務(wù)器當(dāng)前時(shí)間的時(shí)間差
//單獨(dú)獲取活動(dòng)時(shí)間
getservicetime() {
let servicetimer = setinterval(function() {
this.$axios.get(……,{})
.then((response) => {
endtime = ……
starttime = ……
currenttime = ……
},(error) => {});
},6000)
}
//上面的接口以輪詢的方式去獲取活動(dòng)開(kāi)始時(shí)間、結(jié)束時(shí)間、服務(wù)器當(dāng)前時(shí)間,輪詢時(shí)間間隔為 n 秒,此處 n 是 6,下面是倒計(jì)時(shí)的時(shí)間處理
let timmer = setinterval(()=>{
//從單獨(dú)接口獲取到服務(wù)器當(dāng)前時(shí)間 currenttime,活動(dòng)開(kāi)始時(shí)間 starttime,活動(dòng)結(jié)束時(shí)間 endtime
let localtime = new date().gettime()//本地當(dāng)前時(shí)間,在本地自己 new 得到
let diftime = localtime - currenttime//接口開(kāi)始傳輸時(shí)的服務(wù)器時(shí)間,和拿到接口數(shù)據(jù)時(shí)的本地時(shí)間,之間的差值
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 `距離活動(dòng)結(jié)束還有${day}天${hour}小時(shí)${min}分${sec}秒`;
} else if(day <= 0 && hour > 0 ){
return `距離活動(dòng)結(jié)束還有${hour}小時(shí)${min}分${sec}秒`;
} else if(day <= 0 && hour <= 0){
reuturn `距離活動(dòng)結(jié)束還有${min}分${sec}秒`;
}
}else{
clearinterval(timer);
return '活動(dòng)結(jié)束'
}
},1000)
有些童鞋可能會(huì)說(shuō),你這里拿了本地時(shí)間做參考,如果本地時(shí)間不準(zhǔn)呢?或者有人惡意修改了本地時(shí)間呢?那我們得到的豈不是不準(zhǔn)確?或者說(shuō)是錯(cuò)誤的時(shí)間?
惡意修改,確實(shí)沒(méi)有辦法。我們只能無(wú)條件的信任本地時(shí)間,拿它來(lái)做參考,處理這個(gè)活動(dòng)倒計(jì)時(shí)。好在現(xiàn)在的移動(dòng)端,時(shí)間都是根據(jù)時(shí)區(qū)自動(dòng)獲取的,不能人為修改,再加上現(xiàn)在 pc 互聯(lián)向 移動(dòng) 互聯(lián)的遷徙,大部分的活動(dòng)倒計(jì)時(shí)都是在移動(dòng)端展現(xiàn)的,這應(yīng)該也是我們很少在 pc 頁(yè)面上看到有倒計(jì)時(shí)活動(dòng)的原因吧。
我們更少看到有哪個(gè)電商網(wǎng)站,pc 端和 移動(dòng)端 同時(shí)有倒計(jì)時(shí)活動(dòng)吧?
也可能有人會(huì)發(fā)出疑問(wèn):這個(gè)時(shí)間差需要計(jì)嗎?只獲取一次服務(wù)器時(shí)間,然后直接在本地倒計(jì)時(shí)豈不是更好?本著精益求精的態(tài)度,我們也做了試驗(yàn),在 pc 端 輪詢獲取服務(wù)器時(shí)間,移動(dòng)端只獲取一次服務(wù)器時(shí)間,做了對(duì)比。發(fā)現(xiàn)在最開(kāi)始的一段時(shí)間(大概20分鐘)里,確實(shí)是沒(méi)有問(wèn)題,或者說(shuō)時(shí)間差感覺(jué)不到。過(guò)了 20 分鐘以后,會(huì)出現(xiàn)幾秒的時(shí)間差,再往后兩者時(shí)間差越來(lái)越大。思考 了一下,在移動(dòng)端只獲取一次服務(wù)器時(shí)間,依靠手機(jī)的本地倒計(jì)時(shí),這個(gè)倒計(jì)時(shí)就依賴于手機(jī)自身的性能處理了。
爆款產(chǎn)品:香港服務(wù)器租用去首頁(yè)注冊(cè)領(lǐng)券!YINGSOO最新推出Swarm物理節(jié)點(diǎn)服務(wù)器、Swarm母雞服務(wù)器、Swarm Bzz挖礦教程【圖文教程】、Swarm Bzz挖礦教程【視頻教程】,《swarm bzz挖礦資料大全》,Swarm Bee節(jié)點(diǎn)租用請(qǐng)咨詢YINGSOO客服!
版權(quán)聲明:本站文章來(lái)源標(biāo)注為YINGSOO的內(nèi)容版權(quán)均為本站所有,歡迎引用、轉(zhuǎn)載,請(qǐng)保持原文完整并注明來(lái)源及原文鏈接。禁止復(fù)制或仿造本網(wǎng)站,禁止在非maisonbaluchon.cn所屬的服務(wù)器上建立鏡像,否則將依法追究法律責(zé)任。本站部分內(nèi)容來(lái)源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來(lái),僅供學(xué)習(xí)參考,不代表本站立場(chǎng),如有內(nèi)容涉嫌侵權(quán),請(qǐng)聯(lián)系alex-e#qq.com處理。
關(guān)注官方微信