84669 person learning
152542 person learning
20005 person learning
5487 person learning
7821 person learning
359900 person learning
3350 person learning
180660 person learning
48569 person learning
18603 person learning
40936 person learning
1549 person learning
1183 person learning
32909 person learning
现在要做一套答题系统,整体的业务逻辑是:(1)用户购买了某套试题,试题有答题时长,比如2小时。(2)用户开始做题,从用户第一次打开试题开始计时,用户答题五分钟以后关闭试题页面,该套试题的剩余时间为:(2小时-5分钟)。想问下,有没有比较好的计时方法?
刚开始的思路是在用户点开试题的时候,前端开始计时,比如5秒钟向后端回传一次数据,或者等用户关闭试题页面的时候,将学习时间一次提交到后端。但是,这里有个问题,如果用户抓包拦截了请求,那么后端就不能正确统计时间。
光阴似箭催人老,日月如移越少年。
可以参考下牛客网,在开始试题触发一次后端请求,每次点击下一题也触发一次,在页面停留每几秒触发一次。在这几次触发中可以收集时间。
答题应该是一直答吧。。难道还可以关闭继续答?如果是这样那这个意义就不大了吧,看完题目后面再答。。这个计时就是伪需求。。。如果一直答的话,后端计时就可以了,前段搞个提示性的就行,以后端为主
开始答题时就给后端做个记录啊, 记录开始时间, ajax请求时验证是否超时. 如拦截, 总要提交吧, 对比下就可以了
说白了就是不断的进行ajax轮询,或者就看下html5的Server-sent Events 要不就是web.socket
Server-sent Events
开始答题后端记录时间,然后前端那这个时间进行倒计时。用户关闭答题画面,记录这个关闭时间。下次再答题,画面就跟据最开始记录的时候与上次关闭的时间计算出剩余时间进行倒计时。为防止时间不一致,可以不每隔几分钟再做一遍时间校验以纠正时间。
session记下开始答题时间么,前端只从后端读
可以参考下牛客网,在开始试题触发一次后端请求,每次点击下一题也触发一次,在页面停留每几秒触发一次。在这几次触发中可以收集时间。
答题应该是一直答吧。。难道还可以关闭继续答?如果是这样那这个意义就不大了吧,看完题目后面再答。。这个计时就是伪需求。。。如果一直答的话,后端计时就可以了,前段搞个提示性的就行,以后端为主
开始答题时就给后端做个记录啊, 记录开始时间, ajax请求时验证是否超时. 如拦截, 总要提交吧, 对比下就可以了
说白了就是不断的进行ajax轮询,或者就看下html5的
Server-sent Events
要不就是web.socket开始答题后端记录时间,然后前端那这个时间进行倒计时。用户关闭答题画面,记录这个关闭时间。下次再答题,画面就跟据最开始记录的时候与上次关闭的时间计算出剩余时间进行倒计时。为防止时间不一致,可以不每隔几分钟再做一遍时间校验以纠正时间。
session记下开始答题时间么,前端只从后端读