最近做一个项目,需要记录用户的登录历史信息,其中在用户下线时间的获取上遇到了困难,用户登出网页的方法有三种:
1、使用网站提供的登出功能 2、直接关闭网页 3、直接关闭浏览器、突然断电等
如果用户正常登出,可以直接new Date()获取当前时间,在退出成功后保存相关数据;如果用户关闭网页退出,可以使用js捕捉页面关闭事件;独独在直接关闭浏览器、突然断电这里,大家都知道,如果客户端不发送任何请求,后台就无法判定用户状态。在网上找了很多关于抓取用户下线时间的方法,其中包括使用监听器监听session,设置会话超时时间,当会话创建、销毁时做出相应操作,但是这个方法获得的时间不准确,会话超时时间设置太低,频繁的登录影响用户体验。还有一个方法就是通过心跳检测用户的在线状态,在前台设置一个定时器,从用户登录开始发送请求,当用户离开网站时,定时器就会停止,自然能获得一个相对准确的下线时间。本人采用的便是心跳检测的方法,下面来说说实现方式: