2012-07-10 142 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可能不值得尝试。