java,用户关闭浏览器,如何记录用户的退出时间?望大神给个方案。

乃刀的青春 2014-03-24 03:54:02
目前项目中实现的是配置的session监听,但是存在的问题记录用户退出时间得等到服务器的session销毁。时间差异会比较大,还发现有的session销毁监听不到。。。。很蛋疼。所以提出了如题的疑问,希望能够监听到用户关闭浏览器的事件,但是要做到浏览器兼容。如果有别的办法就更好了。。。
...全文
1413 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
brooklyng60 2016-12-02
  • 打赏
  • 举报
回复
通过session监听,注册session销毁以前也用过,确实存在楼主这样的问题,要不不及时,要么干脆监听不到,不稳定。所以类似这样的功能改成客户端实现,或者通过网页active控件发送心跳包
魔都 2016-11-30
  • 打赏
  • 举报
回复
其实这个需求,真的狠扯。唯一的办法心跳,我也是不建议的。 如果你有用户轨迹,用户的最后一次的操作,基本可以说是最后的退出时间。 这个表一般特别的大,在mongdb nosql 数据库中。
guduyishuai 2016-11-30
  • 打赏
  • 举报
回复
引用 4 楼 longtian1213 的回复:
监听 页面关闭事件呗,关闭页面时向服务器发送个AJAX请求!
直接关机、停电你作何处理
tony4geek 2014-03-28
  • 打赏
  • 举报
回复
类似于推送 ,看看可以不。
不是太高的手 2014-03-28
  • 打赏
  • 举报
回复
这种操作还是没必要做了 太麻烦了
只是_曾经 2014-03-28
  • 打赏
  • 举报
回复
心跳很靠谱。
LeayAo 2014-03-28
  • 打赏
  • 举报
回复
用js吧,onbeforeunload事件: 目前三大主流浏览器中firefox和IE都支持onbeforeunload事件,chrome业已测试通过
<script> 
   function checkLeave(){ 
//TODO:这里发送ajax记录关闭时间,可以不弹出提示
    event.returnValue="确定离开当前页面吗?"; 
   } 
   </script> 
 <body onbeforeunload="checkLeave()"> 
   </body> 
乃刀的青春 2014-03-28
  • 打赏
  • 举报
回复
引用 14 楼 wdz567 的回复:
最好是设置一个公共的页面,每过几秒向后台发送请求连接,确认该连接有效。
这样服务器的压力也很大!
sca4441479 2014-03-27
  • 打赏
  • 举报
回复
通过window.onbeforeunload ,window.onunload 函数配合,当关闭页面时发送异步请求
酒剑仙 2014-03-27
  • 打赏
  • 举报
回复
引用 12 楼 sca4441479 的回复:
通过window.onbeforeunload ,window.onunload 函数配合,当关闭页面时发送异步请求
刷新页面也会触发这些事件吧
酒剑仙 2014-03-27
  • 打赏
  • 举报
回复
最好是设置一个公共的页面,每过几秒向后台发送请求连接,确认该连接有效。
q1531 2014-03-27
  • 打赏
  • 举报
回复
通过客户端主动监听行为都是不靠谱的。这种只有一个办法,心跳。
changhuanhuan 2014-03-26
  • 打赏
  • 举报
回复
添加心跳检查
S117 2014-03-25
  • 打赏
  • 举报
回复
引用 8 楼 wjg19890301 的回复:
[quote=引用 4 楼 longtian1213 的回复:] 监听 页面关闭事件呗,关闭页面时向服务器发送个AJAX请求!
如果是多个页签呢?[/quote] 页面加载时不是有个事件吗?每当打开一个页面就记录下,关闭时就去记录中查找,当都关闭了就记录时间吧!
Defonds 2014-03-25
  • 打赏
  • 举报
回复
还是心跳靠谱。 但是时间也不够准确哦,而且还加大了你的服务器负载
S117 2014-03-25
  • 打赏
  • 举报
回复
监听 页面关闭事件呗,关闭页面时向服务器发送个AJAX请求!
  • 打赏
  • 举报
回复
可以试着做做心跳看,如果心跳断了,那就是用户已经退出了
想喝咖啡的貓 2014-03-25
  • 打赏
  • 举报
回复 1
非常非常难,意外的情况非常多。
卖水果的net 2014-03-25
  • 打赏
  • 举报
回复
这个太难了,出了页面,就不归你的程序管了,如果打开发多个浏览器窗口,更是困难。 帮你D一下。
lightning_16 2014-03-25
  • 打赏
  • 举报
回复
唯一可行的是心跳。 页面有个层一直在异步请求。关了不请求就判断失效了。。浏览器决定了,关闭时,是不会发出通知的
加载更多回复(1)

81,092

社区成员

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

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