用户登录后,点击一个按钮开始倒计时,这时用另一个浏览器登录,怎么继续倒计时

非阳 2017-11-03 10:55:12
用户登录后,点击一个按钮开始倒计时,这时在另一个浏览器登录该用户,怎么继续倒计时?求大神解惑啊
...全文
653 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
maradona1984 2017-11-09
  • 打赏
  • 举报
回复
引用 1 楼 r562253897 的回复:
每次登陆时session中记录个登陆时间,你的倒计时是根据这个登陆时间计算吧, 当另一个浏览器登陆,不要重置session的登陆时间,将这个时间返回到前端以同样的算法计算倒计时即可。
这个不是扯蛋么...如果没有特殊实现,就web容器的session来说,同一个用户在不同浏览器登录,session是不一样的 实现很简单,把结束时间存到数据库里即可,进入的时候再查,显示倒计时即可
syqh13 2017-11-09
  • 打赏
  • 举报
回复
存在多端数据交互,数据就放数据库里面去啊,redis也算一种数据库
maradona1984 2017-11-09
  • 打赏
  • 举报
回复
引用 18 楼 r562253897 的回复:
[quote=引用 17 楼 maradona1984 的回复:] [quote=引用 15 楼 r562253897 的回复:] [quote=引用 13 楼 maradona1984 的回复:] [quote=引用 12 楼 r562253897 的回复:] [quote=引用 8 楼 maradona1984 的回复:] [quote=引用 1 楼 r562253897 的回复:] 每次登陆时session中记录个登陆时间,你的倒计时是根据这个登陆时间计算吧, 当另一个浏览器登陆,不要重置session的登陆时间,将这个时间返回到前端以同样的算法计算倒计时即可。
这个不是扯蛋么...如果没有特殊实现,就web容器的session来说,同一个用户在不同浏览器登录,session是不一样的 实现很简单,把结束时间存到数据库里即可,进入的时候再查,显示倒计时即可[/quote] 你去看看很多网站,关闭浏览器,再打开,还是处于登陆状态;他们都是把session存到数据库了?[/quote] 你是真不懂还是假不懂... 先了解下session是如何产生的,如何和客户端(浏览器)对应起来的 https://www.cnblogs.com/woshimrf/p/5317776.html 你打开一个浏览器,再打开一个浏览器(这个得分场景了),如果第一个是IE,第二个是chrome,那cookie必然不共享,session肯定也无法共享,你说的肯定不对 如果两次都打开同一种浏览器的,仅仅用session来维持会话的逻辑的话,也是行不通的,因为楼主已经说了,第二个浏览器登录用户,重新登录自然会开辟新的session,而不是之前登录的session,自然也是无用的 你说的自动登录,那就是我说的特殊实现(相对于你的session方案,稍微复杂点),当然是有数据存到数据库了,但一般就是个token,比如你登录后,cookie中保存一个较长生命周期的值,再次进入的时候根据这个token登录,不然你觉得你今天登录CSDN,明天也是自动登录的,要知道session是有过期时间的,那肯定存数据库最经济省力的方案了 [/quote] 什么是相同的session,不正是基于浏览器的cookie,这里给cookie做点手脚就可以了,什么东西都存数据库;你先理解清楚再评论吧。[/quote] 我应该算是很清楚的,存数据库是最简单省事,能应对各种场景,我一个用IE登录,一个用chrome登录,或者我换台电脑登录,你cookie能解决? 算咯,楼主需求虽然不太清晰,人家大概就是做个倒计时功能,但用户登录之后看到的结果都一致,无论在A客户端,B客户端,这个客户端可能是不同浏览器,不同机器上的浏览器 存数据库的确是最安全的解决方案 虽然我不知道你所说的对cookie做手脚大概做啥,但cookie这东西有很多限制,大小,安全性,跨域,各种浏览器兼容问题 讨论技术就没必要嘴硬了,我说出来的都是实打实的可行的方案 [/quote] 确实用session会比较麻烦,最简单就是定义一个静态Map就能搞定,userID->时间,最近因为处理并发之类的问题,对于将临时数据存入数据库比较敏感。 [/quote] 还是说句对不起 按照楼主水平,估计用map也会用错,他会考虑线程安全问题么...
maradona1984 2017-11-09
  • 打赏
  • 举报
回复
引用 16 楼 r562253897 的回复:
[quote=引用 13 楼 maradona1984 的回复:] [quote=引用 12 楼 r562253897 的回复:] [quote=引用 8 楼 maradona1984 的回复:] [quote=引用 1 楼 r562253897 的回复:] 每次登陆时session中记录个登陆时间,你的倒计时是根据这个登陆时间计算吧, 当另一个浏览器登陆,不要重置session的登陆时间,将这个时间返回到前端以同样的算法计算倒计时即可。
这个不是扯蛋么...如果没有特殊实现,就web容器的session来说,同一个用户在不同浏览器登录,session是不一样的 实现很简单,把结束时间存到数据库里即可,进入的时候再查,显示倒计时即可[/quote] 你去看看很多网站,关闭浏览器,再打开,还是处于登陆状态;他们都是把session存到数据库了?[/quote] 你是真不懂还是假不懂... 先了解下session是如何产生的,如何和客户端(浏览器)对应起来的 https://www.cnblogs.com/woshimrf/p/5317776.html 你打开一个浏览器,再打开一个浏览器(这个得分场景了),如果第一个是IE,第二个是chrome,那cookie必然不共享,session肯定也无法共享,你说的肯定不对 如果两次都打开同一种浏览器的,仅仅用session来维持会话的逻辑的话,也是行不通的,因为楼主已经说了,第二个浏览器登录用户,重新登录自然会开辟新的session,而不是之前登录的session,自然也是无用的 你说的自动登录,那就是我说的特殊实现(相对于你的session方案,稍微复杂点),当然是有数据存到数据库了,但一般就是个token,比如你登录后,cookie中保存一个较长生命周期的值,再次进入的时候根据这个token登录,不然你觉得你今天登录CSDN,明天也是自动登录的,要知道session是有过期时间的,那肯定存数据库最经济省力的方案了 [/quote] 还有一点,哪怕我说的方案真是有问题,也不需要你用“扯蛋”之类的字眼来评论。 这类的方案确实有很多,没必要因为你认为自己是对的,全天下都欠你啥似的。 评论到此为止,不希望再看到你类似的口吻。[/quote] 那还真对不住了,扯蛋只是针对你的方案来说的,而不是对你的人 对事不对人,你的方案的确挺扯蛋的 但还是说声对不起吧,虽然没啥诚意
独家de记忆 2017-11-09
  • 打赏
  • 举报
回复
引用 17 楼 maradona1984 的回复:
[quote=引用 15 楼 r562253897 的回复:] [quote=引用 13 楼 maradona1984 的回复:] [quote=引用 12 楼 r562253897 的回复:] [quote=引用 8 楼 maradona1984 的回复:] [quote=引用 1 楼 r562253897 的回复:] 每次登陆时session中记录个登陆时间,你的倒计时是根据这个登陆时间计算吧, 当另一个浏览器登陆,不要重置session的登陆时间,将这个时间返回到前端以同样的算法计算倒计时即可。
这个不是扯蛋么...如果没有特殊实现,就web容器的session来说,同一个用户在不同浏览器登录,session是不一样的 实现很简单,把结束时间存到数据库里即可,进入的时候再查,显示倒计时即可[/quote] 你去看看很多网站,关闭浏览器,再打开,还是处于登陆状态;他们都是把session存到数据库了?[/quote] 你是真不懂还是假不懂... 先了解下session是如何产生的,如何和客户端(浏览器)对应起来的 https://www.cnblogs.com/woshimrf/p/5317776.html 你打开一个浏览器,再打开一个浏览器(这个得分场景了),如果第一个是IE,第二个是chrome,那cookie必然不共享,session肯定也无法共享,你说的肯定不对 如果两次都打开同一种浏览器的,仅仅用session来维持会话的逻辑的话,也是行不通的,因为楼主已经说了,第二个浏览器登录用户,重新登录自然会开辟新的session,而不是之前登录的session,自然也是无用的 你说的自动登录,那就是我说的特殊实现(相对于你的session方案,稍微复杂点),当然是有数据存到数据库了,但一般就是个token,比如你登录后,cookie中保存一个较长生命周期的值,再次进入的时候根据这个token登录,不然你觉得你今天登录CSDN,明天也是自动登录的,要知道session是有过期时间的,那肯定存数据库最经济省力的方案了 [/quote] 什么是相同的session,不正是基于浏览器的cookie,这里给cookie做点手脚就可以了,什么东西都存数据库;你先理解清楚再评论吧。[/quote] 我应该算是很清楚的,存数据库是最简单省事,能应对各种场景,我一个用IE登录,一个用chrome登录,或者我换台电脑登录,你cookie能解决? 算咯,楼主需求虽然不太清晰,人家大概就是做个倒计时功能,但用户登录之后看到的结果都一致,无论在A客户端,B客户端,这个客户端可能是不同浏览器,不同机器上的浏览器 存数据库的确是最安全的解决方案 虽然我不知道你所说的对cookie做手脚大概做啥,但cookie这东西有很多限制,大小,安全性,跨域,各种浏览器兼容问题 讨论技术就没必要嘴硬了,我说出来的都是实打实的可行的方案 [/quote] 确实用session会比较麻烦,最简单就是定义一个静态Map就能搞定,userID->时间,最近因为处理并发之类的问题,对于将临时数据存入数据库比较敏感。
maradona1984 2017-11-09
  • 打赏
  • 举报
回复
引用 15 楼 r562253897 的回复:
[quote=引用 13 楼 maradona1984 的回复:] [quote=引用 12 楼 r562253897 的回复:] [quote=引用 8 楼 maradona1984 的回复:] [quote=引用 1 楼 r562253897 的回复:] 每次登陆时session中记录个登陆时间,你的倒计时是根据这个登陆时间计算吧, 当另一个浏览器登陆,不要重置session的登陆时间,将这个时间返回到前端以同样的算法计算倒计时即可。
这个不是扯蛋么...如果没有特殊实现,就web容器的session来说,同一个用户在不同浏览器登录,session是不一样的 实现很简单,把结束时间存到数据库里即可,进入的时候再查,显示倒计时即可[/quote] 你去看看很多网站,关闭浏览器,再打开,还是处于登陆状态;他们都是把session存到数据库了?[/quote] 你是真不懂还是假不懂... 先了解下session是如何产生的,如何和客户端(浏览器)对应起来的 https://www.cnblogs.com/woshimrf/p/5317776.html 你打开一个浏览器,再打开一个浏览器(这个得分场景了),如果第一个是IE,第二个是chrome,那cookie必然不共享,session肯定也无法共享,你说的肯定不对 如果两次都打开同一种浏览器的,仅仅用session来维持会话的逻辑的话,也是行不通的,因为楼主已经说了,第二个浏览器登录用户,重新登录自然会开辟新的session,而不是之前登录的session,自然也是无用的 你说的自动登录,那就是我说的特殊实现(相对于你的session方案,稍微复杂点),当然是有数据存到数据库了,但一般就是个token,比如你登录后,cookie中保存一个较长生命周期的值,再次进入的时候根据这个token登录,不然你觉得你今天登录CSDN,明天也是自动登录的,要知道session是有过期时间的,那肯定存数据库最经济省力的方案了 [/quote] 什么是相同的session,不正是基于浏览器的cookie,这里给cookie做点手脚就可以了,什么东西都存数据库;你先理解清楚再评论吧。[/quote] 我应该算是很清楚的,存数据库是最简单省事,能应对各种场景,我一个用IE登录,一个用chrome登录,或者我换台电脑登录,你cookie能解决? 算咯,楼主需求虽然不太清晰,人家大概就是做个倒计时功能,但用户登录之后看到的结果都一致,无论在A客户端,B客户端,这个客户端可能是不同浏览器,不同机器上的浏览器 存数据库的确是最安全的解决方案 虽然我不知道你所说的对cookie做手脚大概做啥,但cookie这东西有很多限制,大小,安全性,跨域,各种浏览器兼容问题 讨论技术就没必要嘴硬了,我说出来的都是实打实的可行的方案
独家de记忆 2017-11-09
  • 打赏
  • 举报
回复
引用 13 楼 maradona1984 的回复:
[quote=引用 12 楼 r562253897 的回复:] [quote=引用 8 楼 maradona1984 的回复:] [quote=引用 1 楼 r562253897 的回复:] 每次登陆时session中记录个登陆时间,你的倒计时是根据这个登陆时间计算吧, 当另一个浏览器登陆,不要重置session的登陆时间,将这个时间返回到前端以同样的算法计算倒计时即可。
这个不是扯蛋么...如果没有特殊实现,就web容器的session来说,同一个用户在不同浏览器登录,session是不一样的 实现很简单,把结束时间存到数据库里即可,进入的时候再查,显示倒计时即可[/quote] 你去看看很多网站,关闭浏览器,再打开,还是处于登陆状态;他们都是把session存到数据库了?[/quote] 你是真不懂还是假不懂... 先了解下session是如何产生的,如何和客户端(浏览器)对应起来的 https://www.cnblogs.com/woshimrf/p/5317776.html 你打开一个浏览器,再打开一个浏览器(这个得分场景了),如果第一个是IE,第二个是chrome,那cookie必然不共享,session肯定也无法共享,你说的肯定不对 如果两次都打开同一种浏览器的,仅仅用session来维持会话的逻辑的话,也是行不通的,因为楼主已经说了,第二个浏览器登录用户,重新登录自然会开辟新的session,而不是之前登录的session,自然也是无用的 你说的自动登录,那就是我说的特殊实现(相对于你的session方案,稍微复杂点),当然是有数据存到数据库了,但一般就是个token,比如你登录后,cookie中保存一个较长生命周期的值,再次进入的时候根据这个token登录,不然你觉得你今天登录CSDN,明天也是自动登录的,要知道session是有过期时间的,那肯定存数据库最经济省力的方案了 [/quote] 还有一点,哪怕我说的方案真是有问题,也不需要你用“扯蛋”之类的字眼来评论。 这类的方案确实有很多,没必要因为你认为自己是对的,全天下都欠你啥似的。 评论到此为止,不希望再看到你类似的口吻。
独家de记忆 2017-11-09
  • 打赏
  • 举报
回复
引用 13 楼 maradona1984 的回复:
[quote=引用 12 楼 r562253897 的回复:] [quote=引用 8 楼 maradona1984 的回复:] [quote=引用 1 楼 r562253897 的回复:] 每次登陆时session中记录个登陆时间,你的倒计时是根据这个登陆时间计算吧, 当另一个浏览器登陆,不要重置session的登陆时间,将这个时间返回到前端以同样的算法计算倒计时即可。
这个不是扯蛋么...如果没有特殊实现,就web容器的session来说,同一个用户在不同浏览器登录,session是不一样的 实现很简单,把结束时间存到数据库里即可,进入的时候再查,显示倒计时即可[/quote] 你去看看很多网站,关闭浏览器,再打开,还是处于登陆状态;他们都是把session存到数据库了?[/quote] 你是真不懂还是假不懂... 先了解下session是如何产生的,如何和客户端(浏览器)对应起来的 https://www.cnblogs.com/woshimrf/p/5317776.html 你打开一个浏览器,再打开一个浏览器(这个得分场景了),如果第一个是IE,第二个是chrome,那cookie必然不共享,session肯定也无法共享,你说的肯定不对 如果两次都打开同一种浏览器的,仅仅用session来维持会话的逻辑的话,也是行不通的,因为楼主已经说了,第二个浏览器登录用户,重新登录自然会开辟新的session,而不是之前登录的session,自然也是无用的 你说的自动登录,那就是我说的特殊实现(相对于你的session方案,稍微复杂点),当然是有数据存到数据库了,但一般就是个token,比如你登录后,cookie中保存一个较长生命周期的值,再次进入的时候根据这个token登录,不然你觉得你今天登录CSDN,明天也是自动登录的,要知道session是有过期时间的,那肯定存数据库最经济省力的方案了 [/quote] 什么是相同的session,不正是基于浏览器的cookie,这里给cookie做点手脚就可以了,什么东西都存数据库;你先理解清楚再评论吧。
qq_18343047 2017-11-09
  • 打赏
  • 举报
回复
他是不同页面,得通过系统交互呢,什么页面定时器不能实现全部的
maradona1984 2017-11-09
  • 打赏
  • 举报
回复
引用 12 楼 r562253897 的回复:
[quote=引用 8 楼 maradona1984 的回复:] [quote=引用 1 楼 r562253897 的回复:] 每次登陆时session中记录个登陆时间,你的倒计时是根据这个登陆时间计算吧, 当另一个浏览器登陆,不要重置session的登陆时间,将这个时间返回到前端以同样的算法计算倒计时即可。
这个不是扯蛋么...如果没有特殊实现,就web容器的session来说,同一个用户在不同浏览器登录,session是不一样的 实现很简单,把结束时间存到数据库里即可,进入的时候再查,显示倒计时即可[/quote] 你去看看很多网站,关闭浏览器,再打开,还是处于登陆状态;他们都是把session存到数据库了?[/quote] 你是真不懂还是假不懂... 先了解下session是如何产生的,如何和客户端(浏览器)对应起来的 https://www.cnblogs.com/woshimrf/p/5317776.html 你打开一个浏览器,再打开一个浏览器(这个得分场景了),如果第一个是IE,第二个是chrome,那cookie必然不共享,session肯定也无法共享,你说的肯定不对 如果两次都打开同一种浏览器的,仅仅用session来维持会话的逻辑的话,也是行不通的,因为楼主已经说了,第二个浏览器登录用户,重新登录自然会开辟新的session,而不是之前登录的session,自然也是无用的 你说的自动登录,那就是我说的特殊实现(相对于你的session方案,稍微复杂点),当然是有数据存到数据库了,但一般就是个token,比如你登录后,cookie中保存一个较长生命周期的值,再次进入的时候根据这个token登录,不然你觉得你今天登录CSDN,明天也是自动登录的,要知道session是有过期时间的,那肯定存数据库最经济省力的方案了
独家de记忆 2017-11-09
  • 打赏
  • 举报
回复
引用 8 楼 maradona1984 的回复:
[quote=引用 1 楼 r562253897 的回复:] 每次登陆时session中记录个登陆时间,你的倒计时是根据这个登陆时间计算吧, 当另一个浏览器登陆,不要重置session的登陆时间,将这个时间返回到前端以同样的算法计算倒计时即可。
这个不是扯蛋么...如果没有特殊实现,就web容器的session来说,同一个用户在不同浏览器登录,session是不一样的 实现很简单,把结束时间存到数据库里即可,进入的时候再查,显示倒计时即可[/quote] 你去看看很多网站,关闭浏览器,再打开,还是处于登陆状态;他们都是把session存到数据库了?
  • 打赏
  • 举报
回复
你这个问题类似时下有个最流行的游戏,王者荣耀,游戏开始前会有个倒计时,当你这时断网,过几秒再连接网络,你会发现倒计时显示的为剩余的真实秒数,而不是接着上次断线时的错误秒数,这个就是跟1楼说的类似同理,将登录数据存储在session中,这也是最快速最有效的方法,可以避免有比较大的时间差。
小胖9040 2017-11-09
  • 打赏
  • 举报
回复
用户执行操作时在数据库或服务器缓存中记录开始时间,页面通过开始时间计算倒计时。用户使用其它浏览器登录时查询执行操作的时间并传递到页面,页面通过该是时间计算倒计时。
yannsPeng 2017-11-09
  • 打赏
  • 举报
回复
定时器检测session吧。
  • 打赏
  • 举报
回复
放redis缓存中,根据用户id或业务相关id获取
Zxdth 2017-11-08
  • 打赏
  • 举报
回复
session 监听器
Sunyiban 2017-11-07
  • 打赏
  • 举报
回复
记录一下登录时间,每次登录时拿出来倒计时
叮咚呛咚呛 2017-11-07
  • 打赏
  • 举报
回复
只要你的倒计时时间不是存放在页面上 那就没一点毛病 如果你的倒计时完全是依赖jsp页面实现的 那就木有意义咯
Defonds 2017-11-03
  • 打赏
  • 举报
回复
倒计时线程(或任务)对 session 进行监听,有 session 就继续
独家de记忆 2017-11-03
  • 打赏
  • 举报
回复
每次登陆时session中记录个登陆时间,你的倒计时是根据这个登陆时间计算吧, 当另一个浏览器登陆,不要重置session的登陆时间,将这个时间返回到前端以同样的算法计算倒计时即可。

81,115

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧