2012-07-10 157 views
0

在客戶端,我們在典型的格式JS櫃檯:coundown服務器端執行

XX天XX小時XX分XX秒時

,是它讓計數。每當計數器達到零時,我想自動關閉註冊事件。

我不明白的是如何在服務器端和客戶端兩種時間同步,從而使cron作業將至少分鐘精密佔時區進行。我需要嗎?除了數據庫中'date''time''locale'之外,我還需要什麼?

的背景是基於Java +春+ PostgreSQL的

我不需要整個解決方案的Web應用程序 - 而很好的提示(或鏈接),從哪裏開始挖。

+0

你是什麼意思同步時間?例如,你現在是否已經在客戶端**和**服務器上倒計時,並且它們正在基於時區計數不同步? – 2012-07-10 12:59:13

+4

在服務器端,你不應該保持一個櫃檯,甚至cron作業。只需檢查註冊的時間,如果太晚,請回復錯誤消息,否則繼續。 – Thor84no 2012-07-10 13:01:58

+0

我第二次Thor84no的建議 – Adi 2012-07-10 13:03:58

回答

0

如果你需要的是讓服務器知道,當倒計時已經在客戶端結束,所有你需要做的是,當倒計時完成後發送AJAX請求。

+0

它是另一種方式,但謝謝你:-) – Aubergine 2012-07-10 15:50:58

0

只是拒絕發送來自客戶端的信息,如果在計時器到期

//have customer enter entry information 

if (endtime > system.currentTimeMillis()) 
{ 
    // accept entry 
    Outputstream.Write(Entry) 
{ 

else 
{ 
    "Sorry Registration Closed" 
} 

另一種方式做,這是倒計時的服務器端,並拒絕入境,如果它是爲時已晚。

Entry = Inputstream(); 
if (system.currentTimeMillis() < endtime) 
{ 
    myEntries[x] = Entry; 
    response = "Entry accepted!" 
} 
else 
{ 
    response = "Entry denied: Registration closed" 
} 

Outputstream.write(response); 
1

一些想法:

  • 設置頁面自動刷新

  • 定期發送一個AJAX請求重新同步。

但是......

  • 在現實中,這將是令人驚訝的客戶端和服務器端的時鐘過了幾個小時明顯漂移。一半體面的個人電腦每天不會漂移超過幾秒鐘。

  • 正在同步時鐘準確地在互聯網上是一個不平凡的問題,可能不是一個,你會使用基於HTTP的服務來解決。

把這兩者結合在一起,我認爲定時器的rsyncing可能不值得嘗試。