打开时启用倒计时的测验
Posted
技术标签:
【中文标题】打开时启用倒计时的测验【英文标题】:Quiz with countdown enabled upon opening 【发布时间】:2019-10-07 22:05:19 【问题描述】:如何实现向选定用户发送电子邮件的在线应用程序。该电子邮件包含一个链接,该链接在电子邮件发送后 3 天内可用。如果用户在链接过期之前单击该链接,那么他们将打开一个新的浏览器窗口/选项卡,其中包含用户特定的问题和一个在窗口加载时开始的倒数计时器。从那一刻开始,不允许停顿,他们有整整 1 小时的时间来回答问题。
测验将由用户提交或在计时器达到 60 分钟后自动提交所有答案。 用户可以看到剩余时间(在 UI 中的某处实时更新)。 如果可能的话,我想以一种方式实现它,如果用户不小心关闭了选项卡,他可以在保存所有答案的情况下再次打开它。
我们目前正在使用 Java/Spring Boot(REST API - 后端)、ReactJS(前端)+ mysql 数据库。
我们并不确切知道应该如何搜索电子邮件链接到期逻辑所需的关键字。登录方法、测验的创建以及将测验连同数据库结构一起发送给用户对我们来说很清楚。 我们感谢任何帮助或实施想法(甚至技术)
【问题讨论】:
没有人会为您创建完整的解决方案,如果您遇到特定问题并表现出您的努力,人们会提供帮助。这可能是一个好的开始auth0.com/docs/quickstart/spa/vanillajs/05-token-renewal 听起来你的堆栈很好。祝你好运。 【参考方案1】:我们的想法是使用特定的随机令牌生成每个测验,如下所示:
04e69b43-f6e2-4a6b-835b-dd58c95e41810
然后,将电子邮件发送给特定的人myapp.com/quizz?token=token
。
后端的 CRON 作业会检查测验的创建日期,并检查是否已经过了 3 天而没有第一次评估,如果是,则将测验标记为过期(当然,当链接将被评估并且测验过期时,将显示错误消息)。
如果测验未过期且用户点击,则自动开始测验并保存在数据库中 firstClickTime 和 expirationTime = firstClick + 1h。前端将每分钟发送一个 JSON,其中包含他迄今为止编写的所有内容,以防止任何丢失的答案如果他关闭标签。
当然还有一些其他的小细节,但这就是全部的想法。
【讨论】:
Cody Gray - 感谢您证明我的观点。您不是简单地删除线条,而是故意低估了我。在这里,也低估了这个,另一个评论,这样我的声誉就更低了。与其简单地告诉我我的问题不合适或根本不适合这里,不如你投票不足。以上是关于打开时启用倒计时的测验的主要内容,如果未能解决你的问题,请参考以下文章