在线用户统计 在用户直接关闭浏览器退出的时候如何删除用户在线
有退出按钮 可以实现这个功能 但是一些用户直接关闭浏览器 发现在线用户还是存在 用session的话 无法及时更新 我想做到用户浏览器一关 我这边一刷就能显示用户已下线 应该用什么方法呢 查了好多说要加一个监听 我是初学 不是很懂 这个监听怎么讲呢 有没有前辈能给点相似代码借鉴一下 谢谢了。 --------------------编程问答-------------------- 最近也在做这个,有个方法可以监听到浏览器关闭的事件,但只对单窗口浏览器有效同求解决办法 --------------------编程问答-------------------- 用户离开系统的方式有三种:主动注销、会话超时、直接关闭浏览器,对于前两种,我们很容易便可将该用户从在线列表中清除,关键是第三种(很多用户都是直接关闭窗口的~~郁闷ing),程序无法捕获窗口关闭的精确时间,只能等到会话超时后在能将该用户清除出在线列表 这样描述是不是清楚点。。 --------------------编程问答-------------------- 在线等 小问题 没大神能帮忙解决下吗。 --------------------编程问答-------------------- http://pengjianbo1.iteye.com/blog/507569 --------------------编程问答-------------------- 楼主别等了这问题以前就有人问过,根本不可能实现,用户怎么关闭浏览器b/s的程序是没法知道的。就拿关闭来说他可以点击浏览器的关闭X按钮关闭,也可以在系统地下的任务栏上右击关闭菜单关闭,也可以在浏览器的标题栏上右击关闭菜单关闭这你就无法判断了,还有如果用户浏览器卡住了直接用进程管理器结束进程关闭,以及死机直接重启机器这些b/s的就更做不到了 --------------------编程问答-------------------- 只有监听服务器的session。但是直接关闭浏览器,session还会存在一定时间,所以呢,监听在线人数,我想也没必要做那么精准,是有差异的。 --------------------编程问答-------------------- 你仔细观察一下通用的网站的话应该会发现,用户在线数量的改变应该不是即时的,
所以我觉得应该里面涉及到一个超时的问题吧。 --------------------编程问答--------------------
public class UserSessionListener implements HttpSessionActivationListener,
HttpSessionAttributeListener, HttpSessionBindingListener,
HttpSessionListener
楼主可以参考下 jdk,不过这也只能当浏览器关闭之后,session过期时候的处理;
直接关闭浏览器 session在一段时间之后 会destory掉的~!
重写下边的方法:
@Override--------------------编程问答-------------------- 尝试了JS等各种方法 好像都阵亡了。session超时这个我已经做了 timeout写的15 就是感觉太长了 用户异常关闭浏览器 不用正常退出时 需要15分钟才能更新在线列表 太短的话 在线用户又容易被弹出 诶 JS方法onbeforeunload 弹出对话框后 选择后可以进入action方法中吗 我尝试window.onbeforeunload = onbeforeunload_handler;
public void sessionDestroyed(HttpSessionEvent arg0) {}
function onbeforeunload_handler(){
var warning="确认退出?";
if(confirm(warning)){
window.location.href="login!loginout.so";
}
return warning;
}
应该怎么写 当点击确定后 可以进入login!loginout.so ?
--------------------编程问答--------------------
你好 我就想做到用户直接关闭浏览器这一种情况的呢 其它都用session超时做了。可以用什么方法呢。 --------------------编程问答--------------------
我不是说了吗用户直接关闭浏览器也有点击浏览器的关闭X按钮关闭,也可以在系统地下的任务栏上右击关闭菜单关闭,甚至alt+F4。这么多没法判断的 --------------------编程问答-------------------- 这玩意 跟本无法判断。。。 --------------------编程问答-------------------- step 1. 将登录后的用户存入一个集合中,并记录最后更新时间。
step 2. 编写一个filter过虑每个需要验证登录的http请求,每次请求更新集合中用户的最后更新时间。
step 3. 再写一个线程每过多长时间就循环一下这个集合中的用户,如果用户已经超过了系统的登录超时时间就从集合中移除,并认为这个用户已经登出了。
个人意见,仅供参考。实际的逻辑还要根据你自己的系统设计而定。
补充:Java , Java相关