我正在创建一个在线测验应用程序并需要服务器端计时器。例如,如果用户打开另一个浏览器或刷新页面或离开和返回时间应该是正确的。
现在我正在使用jquery计时器,并且每5分钟发送一次ajax请求以将正确的信息存储到数据库中。此外,当用户回答问题时,我立即再次发送ajax requst用于相同的目的。
我应该使用信号灯吗?在asp.net mvc中处理服务器端计时器的更合适的方法是什么?
答案 0 :(得分:0)
只要你有一个会话,你就可以简单地存储用户开始在会话状态下进行测验的时间戳。
您可以通过查看该事件的时间戳,减去用户参与调查的时间戳来告知任何未来事件的时间。
示例(服务器端代码):
if (Session["startTime"] == null)
{
Session["startTime"] = DateTime.Now;
}
var ticksRemaining = DateTime.Now - Session["startTime"];
// Use ticksRemaining to populate the start value for the count-down timer
// Works just fine even if they reload the page or open a new browser tab.
// You won't catch if they open a brand-new browser and start a new session,
// but that's a different kind of problem.