在客户端,我们有典型格式的JS计数器:
xx天xx小时xx分钟xx秒左右
它一直在计算。每当计数器达到零时,我想自动关闭一个事件的注册。
我没有得到的是如何在服务器端和客户端同步时间,因此cron作业将至少进行精确计算时区。我需要吗?除了数据库中的'date''time''locale',我还需要什么?
上下文是Java + Spring + Postgresql上的Web应用程序
我不需要整个解决方案 - 相当好的提示(或链接)从哪里开始挖掘。
答案 0 :(得分:1)
一些想法:
将页面设置为autorefresh
定期发送重新同步的AJAX请求。
然而......
实际上,客户端和服务器端时钟在几个小时内会明显漂移会令人惊讶。一台不太好的PC每天不会漂移超过几秒钟。
通过互联网准确同步时钟是一个非常重要的问题,可能不是您要使用基于HTTP的服务解决的问题。
将这两者放在一起,我认为定时器可能不值得尝试。
答案 1 :(得分:0)
如果你需要的是让服务器知道倒计时在客户端何时结束,你需要做的就是在倒计时结束时发送一个AJAX请求。
答案 2 :(得分: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);