Java 服务器端实现
在客户端,我们有典型格式的JS计数器: 还剩xx天xx小时xx分xx秒 它一直在计数。每当计数器达到零,我想自动关闭事件的注册 我不知道的是如何同步服务器端和客户端的时间,这样cron作业将以至少分钟的精度执行,并考虑时区。我需要吗?除了数据库中的“日期”“时间”“区域设置”,我还需要什么 上下文是Java+Spring+Postgresql上的web应用程序Java 服务器端实现,java,javascript,spring,counter,Java,Javascript,Spring,Counter,在客户端,我们有典型格式的JS计数器: 还剩xx天xx小时xx分xx秒 它一直在计数。每当计数器达到零,我想自动关闭事件的注册 我不知道的是如何同步服务器端和客户端的时间,这样cron作业将以至少分钟的精度执行,并考虑时区。我需要吗?除了数据库中的“日期”“时间”“区域设置”,我还需要什么 上下文是Java+Spring+Postgresql上的web应用程序 我不需要完整的解决方案—关于从何处开始挖掘的很好的提示(或链接)。如果您需要的是让服务器知道客户端的倒计时何时结束,那么您所需要做的就是
我不需要完整的解决方案—关于从何处开始挖掘的很好的提示(或链接)。如果您需要的是让服务器知道客户端的倒计时何时结束,那么您所需要做的就是在倒计时结束时发送一个AJAX请求。如果计时器过期,请拒绝从客户端发送信息
//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);
Entry=Inputstream();
if(system.currentTimeMillis()
一些想法:
- 将页面设置为自动刷新
- 定期向重新同步发送AJAX请求
- 实际上,客户端和服务器端时钟在几个小时内明显漂移是令人惊讶的。一台不太像样的电脑一天的漂移时间不会超过几秒钟
- 在internet上准确地同步时钟是一个不小的问题,并且可能不是使用基于HTTP的服务要解决的问题
综合这两个因素,我认为重新同步计时器可能不值得尝试。同步时间是什么意思?例如,您是否已经在客户端和服务器上进行倒计时,并且它们的计数基于时区不同步?在服务器端,您不应该保留计数器,甚至不应该保留cron作业。当你得到注册时,只需检查一下时间,如果太晚了,请回复一条错误消息,否则继续。我支持Thor84no的建议Thor,请将此作为回答,以便我可以接受。虽然这听起来很明显,但我们倾向于将事情过于复杂化。