在Spring Web应用程序中使用计时器跟踪用户操作

弱者

我正在Spring Hibernate中开发一个管理应用程序,其中需要实现一个计时器系统。

使用案例

  1. 用户单击UI(jsp)上的活动或事件。计时器启动,它在UI上显示倒计时。只有在规定的计时器计数结束后,用户才能再次执行该事件。

  2. 我需要将时间保留在数据库中,因为如果用户关闭浏览器,计时器计数应在服务器中继续。就像我们在基于网络的社交媒体游戏中遇到的方式一样。

我在网上搜索了一个解决方案,但没有发现任何问题。我尝试了Spring Scheduling,但似乎无法解决目的,而且它有很多局限性。

谁能建议我任何解决方案?谢谢

神成

为了回答这个问题,我将假设以下内容:

  1. 在后端,您可以运行异步后台作业
  2. 前端的JavaScript计时器足以进行倒计时(无论后台作业有多慢

基本思想是,您向服务器发送日期戳,在前端开始倒数计时,并且只要有互动可以再次尝试该活动,就询问服务器(相同的后台任务)是否有时间间隔已完成。

下面的解决方案只是开始,绝不是管理这种交互所需要的完整版本。

在前端,您可以想象执行以下操作:

function restoreAndStartTimer(response, initialLoad){
   var secondsToCountDown = 10;
   //Here we can use the server response to tell us if there's already
   //a timer running
   if(response.timerRunning){
      secondsToCountDown = response.secondsRemaining;
   }
   //Now kickoff the front-end timer
   function countdown(){
      //Add code here to display stuff to the screen, etc
      if(secondsToCountDown !== 0){
         secondsToCountDown--;
         setTimeout(countdown, 1000);
      }
   };
   if(initialLoad){
      if(response.timerRunning) countdown();
   } else {
      countdown();
   }
};

//Click handler, assuming you use jQuery
$('#myActivityButton').on('click', function(){ 
   $.ajax({
      url: 'https://...',
      type: 'POST',
      //Grabs the time of the click and sends it off to the server
      data: { currentTime: new Date() },
      success: function(response){
         restoreAndStartTimer(response, false);
      }
   });
});

$(function(){
   //On document ready
   //This should be wrapped as a function to avoid repetition, but for the sake of
   //expediency using this editor...
   $.ajax({
      url: 'https://...',
      type: 'POST',
      data: { currentTime: new Date() },
      //If a user had reloaded the page while a timer was running, it will get picked
      //up here, otherwise it does nothing.
      success: function(response){
         restoreAndStartTimer(response, true);
      }
   });
});

至于后端,您将有一些作为后台线程运行的方法。该线程将从前端发送的初始时间戳中获取时间,并根据状态返回以下任何响应:

  1. response.timerRunning = true并且response.secondsRemaining = #ofSeconds鉴于时间间隔尚未完成
  2. response.timerRunning = false 时间间隔最终完成时

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在Windows窗体应用程序C#中使用计时器运行特定时间的循环

来自分类Dev

使用计时器在控制台应用程序中调用单个/多个方法

来自分类Dev

Javafx在使用计时器时不在fx应用程序线程上

来自分类Dev

暂停的iOS应用程序如何使用计时器或获取今天的日期

来自分类Dev

在vb中使用计时器

来自分类Dev

在Web应用程序中使用启动Spring的最新方法

来自分类Dev

在Web应用程序中使用Spring Security实现Oauth2

来自分类Dev

在Web和移动应用程序中使用Spring的最佳方法

来自分类Dev

将在命令行中使用的 spring Web 应用程序

来自分类Dev

使用计划在 Azure WebJob 上运行 Spring Boot 应用程序

来自分类Dev

如何在 Spring 应用程序中使用多个控制器?

来自分类Dev

在 Spring Batch 应用程序的项目处理器中使用作业参数之一

来自分类Dev

如何在 Java Spring Boot 应用程序中跟踪用户的登录

来自分类Dev

在Spring Boot应用程序中使用Coda Hale Meter

来自分类Dev

在Spring Yarn应用程序中使用本地文件

来自分类Dev

在 Spring Boot 应用程序中使用 Soap 服务

来自分类Dev

如何使用Spring(Tomcat服务器)和Maven创建Web应用程序?

来自分类Dev

使用计时器跟踪数组中的项目

来自分类Dev

即使用户关闭了应用程序,是否也可以继续运行倒数计时器

来自分类Dev

如果用户不使用应用程序,则终止 Android 计时器(防止在后台运行)

来自分类Dev

适用于多用户Spring MVC Web应用程序的Spring Security

来自分类Dev

使用Spring MVC创建Web应用程序

来自分类Dev

使用Spring的模块化Web应用程序

来自分类Dev

使用Spring的模块化Web应用程序

来自分类Dev

在我的 Django 应用程序中使用 Javascript 的计时器脚本

来自分类Dev

创建Spring Web应用程序:步骤?

来自分类Dev

将Java应用程序(使用Spring的Web和桌面应用程序)与mongodb连接

来自分类Dev

使用 Jaeger 跟踪检测在 Docker 容器中执行的 Spring-Boot 应用程序

来自分类Dev

使用Spring Boot应用程序在Gradle中使用jettyRunWar或jettyRun只会在浏览器中列出目录

Related 相关文章

  1. 1

    在Windows窗体应用程序C#中使用计时器运行特定时间的循环

  2. 2

    使用计时器在控制台应用程序中调用单个/多个方法

  3. 3

    Javafx在使用计时器时不在fx应用程序线程上

  4. 4

    暂停的iOS应用程序如何使用计时器或获取今天的日期

  5. 5

    在vb中使用计时器

  6. 6

    在Web应用程序中使用启动Spring的最新方法

  7. 7

    在Web应用程序中使用Spring Security实现Oauth2

  8. 8

    在Web和移动应用程序中使用Spring的最佳方法

  9. 9

    将在命令行中使用的 spring Web 应用程序

  10. 10

    使用计划在 Azure WebJob 上运行 Spring Boot 应用程序

  11. 11

    如何在 Spring 应用程序中使用多个控制器?

  12. 12

    在 Spring Batch 应用程序的项目处理器中使用作业参数之一

  13. 13

    如何在 Java Spring Boot 应用程序中跟踪用户的登录

  14. 14

    在Spring Boot应用程序中使用Coda Hale Meter

  15. 15

    在Spring Yarn应用程序中使用本地文件

  16. 16

    在 Spring Boot 应用程序中使用 Soap 服务

  17. 17

    如何使用Spring(Tomcat服务器)和Maven创建Web应用程序?

  18. 18

    使用计时器跟踪数组中的项目

  19. 19

    即使用户关闭了应用程序,是否也可以继续运行倒数计时器

  20. 20

    如果用户不使用应用程序,则终止 Android 计时器(防止在后台运行)

  21. 21

    适用于多用户Spring MVC Web应用程序的Spring Security

  22. 22

    使用Spring MVC创建Web应用程序

  23. 23

    使用Spring的模块化Web应用程序

  24. 24

    使用Spring的模块化Web应用程序

  25. 25

    在我的 Django 应用程序中使用 Javascript 的计时器脚本

  26. 26

    创建Spring Web应用程序:步骤?

  27. 27

    将Java应用程序(使用Spring的Web和桌面应用程序)与mongodb连接

  28. 28

    使用 Jaeger 跟踪检测在 Docker 容器中执行的 Spring-Boot 应用程序

  29. 29

    使用Spring Boot应用程序在Gradle中使用jettyRunWar或jettyRun只会在浏览器中列出目录

热门标签

归档