在客户端,我们有典型格式的 JS 计数器:
xx 天 xx 小时 xx 分钟 xx 秒
它一直在计数。每当计数器达到零时,我想自动关闭事件的注册。
我没有得到的是如何在服务器端和客户端同步时间,这样 cron 作业将以至少分钟的时区精度进行计算。我需要吗?除了数据库中的“日期”“时间”“语言环境”之外,我还需要什么?
上下文是 Java + Spring + Postgresql 上的 Web 应用程序
我不需要整个解决方案——关于从哪里开始挖掘的相当好的提示(或链接)。
在客户端,我们有典型格式的 JS 计数器:
xx 天 xx 小时 xx 分钟 xx 秒
它一直在计数。每当计数器达到零时,我想自动关闭事件的注册。
我没有得到的是如何在服务器端和客户端同步时间,这样 cron 作业将以至少分钟的时区精度进行计算。我需要吗?除了数据库中的“日期”“时间”“语言环境”之外,我还需要什么?
上下文是 Java + Spring + Postgresql 上的 Web 应用程序
我不需要整个解决方案——关于从哪里开始挖掘的相当好的提示(或链接)。
一些想法:
将页面设置为自动刷新
定期发送 AJAX 请求以重新同步。
然而 ...
实际上,客户端和服务器端时钟在几个小时内明显漂移会令人惊讶。一台像样的 PC 每天漂移的时间不会超过几秒钟。
在 Internet 上准确同步时钟不是一个简单的问题,而且可能不是您打算使用基于 HTTP 的服务来解决的问题。
将这两者结合起来,我认为 rsyncing 计时器可能不值得尝试。
如果计时器到期,则拒绝发送来自客户端的信息
//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);
如果您需要让服务器知道客户端的倒计时何时结束,那么您需要做的就是在倒计时完成时发送一个 AJAX 请求。