Javascript中的可靠超时

时间:2014-07-01 15:44:28

标签: javascript angularjs timer countdown

我们正在实施一个AngularJS应用程序,该应用程序向用户显示问题并计算正确答案的数量。测试严格限制在20分钟。但是有一些棘手的要求:

精度

20分钟超时的错误不得超过2秒,即使对于Android 2.3平板电脑或iPad 2等不那么快的设备也是如此。

当地时间修改容差

更改计算机的本地时间不得影响超时结果。当检测到这样的变化时,我们不能将用户作为骗子踢出去:它可能也是由诚实的NTP更新引起的。

进度跟踪

如果用户界面滞后,必须通过不断滴答的倒计时提醒用户剩余时间,这不应累积错误。

-

我尝试了一些不起作用的方法:

  • windows.performance.now:几乎没有在任何地方实施(移动Safari是必需的)
  • 服务器pingbacks:不得要求持续的互联网连接

是否可以一次实施所有要求?

2 个答案:

答案 0 :(得分:0)

您应该尝试使用$interval

查看该页面上的底部示例。

答案 1 :(得分:0)

首先,你需要一些后端,为你计算。如果您完全在客户端管理您的柜台,重新加载该网站将杀死该柜台。

您最初可以将计数器与后端同步,并在客户端计数。 20分钟到期应该由后端发送,可能使用服务器发送的事件或nodejs。

通过将真实计数器移动到后端,您将消除对客户端作弊或滞后的任何可能影响。

为确保计数器正确,您可以在后端与后端同步。