如何判断在线用户,主要是如何判断用户关闭所有窗口(即他已经不在线了)?

shine_car 2001-11-12 10:54:02
加精
如何判断在线用户,主要是如何判断用户关闭所有窗口(即他已经不在线了)?即他没有通过正常的退出途径退出,而是直接关闭当前窗口。
...全文
187 点赞 收藏 23
写回复
23 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
shine_car 2002-02-21
哎,使用Servlet 2.3新增web application listener可以搞定写一个Listener类对session的创建和消除进行侦听。

import javax.servlet.*;
import javax.servlet.http.*;

public class CounterListener implements HttpSessionListener {
private int count = 0;

public synchronized void sessionCreated(HttpSessionEvent se) {
count++;
}

public synchronized void sessionDestroyed(HttpSessionEvent se) {
count--;
}

public int getCount() {
return count;
}
}
回复
Fancy_fan 2001-12-11
你在每个用户进入的时候把所有用户的状态检测一遍就可以了!如果session.timeout,就自动把状态刷新一遍!
回复
happynet 2001-12-11
这问题还没搞定!有谁知道的呀!
回复
shine_car 2001-11-21
anyOne here?
回复
southline 2001-11-21
继续说
回复
colababy 2001-11-21
哈哈!
any one here??
oh,my god!any one here??
i want to know any one here??
i want to know 在线用户有谁?,主要是想知道 用户关闭所有窗口(即他已经不在线了)?
你在线吗?
继续关注!加油!
回复
colababy 2001-11-21
every One here
but ,where are you?
haha,car car
:-)
@_@
回复
shine_car 2001-11-19
另外:对于每一个session都有唯一一个id号,在服务器端如何读取每一个客户端的这个Id 号
回复
shine_car 2001-11-19
谢谢大家的帮助,问题是我这里没有顶级页面可言,如何判断他已经关闭了所有的页面。太难了!!!! 大家继续探讨,我用的是比较愚蠢的办法。弄一个iframe 页面(隐藏)放在在所有的页面里,(每两分钟)向一个application更新这个用户的最后刷新时间,如果读取这个application发现有最后刷新时间与当前时间比较大于2分钟就认为用户关闭所有的页面。不过效率及其低下。(继续探讨,来者有份)
回复
happynet 2001-11-16
关注
回复
colababy 2001-11-16
shine_car
你到底解决没有 ?
回复
lgcfm 2001-11-16
to:mechiland(二流带刀) 

你的方法在正常连接下可以实现,但是一旦用户断线、非法操作,停电、等等,不正常的推出怎么办呢!
回复
colababy 2001-11-16
二流带刀老先生,你的这个方法的适应性值得讨论
大家想想 新浪 的处理方式?是怎样的呢?
继续关注中
回复
KingRabbit 2001-11-16
二流带刀老先生,如果用户死机,或别的异常不能通知主机的话,不就死悄悄了,请问如何避免这种情况?
回复
mechiland 2001-11-16
。。。如果死机,或者其他非正常退出情况,可以通过session bean 来解决(例如,30分钟客户端不向服务器端提交数据就关闭数据库连接)。就想asp的global.asa一样,只是我还没有搞到global.jsa的资料,那位弄到了,告诉我先!

另外,我不老,不要叫我老先生.
回复
hendrix 2001-11-15
这个东东还是需要继续继续!我关注中……请置顶
回复
mechiland 2001-11-14
写错了,if(!confirm("你确定要退出吗?")) //判断
应为
if(confirm("你确定要退出吗?"))

写翻了,不好意思.
回复
mechiland 2001-11-14
在最顶级窗口(即最有可能被最后一个关掉的)中加入以下代码:
1.在<head>区域中加入
<script language="javascript">
function exitIt()
{
if(!confirm("你确定要退出吗?")) //判断
{
window.open('exit.htm','exit','width=10,height=10');
}
return false;
}
</script>

2.在同一文件的body区域中加入:<onUnload="exitIt()">
3.新建一文件,名为exit.html
<html>
<head>
<title>退出</title>
</head>
<body>
<%
//在这里加入退出控制,如将用户离线的消息写入数据库,等等.

%>
<script language="javascript">
//关闭当前窗口
self.close();
</script>
</body>
</html>


回复
colababy 2001-11-14
关注!关注!关注!
继续关注!继续关注!继续关注!
回复
hccpro 2001-11-13
不好精确判断,一般用session.getAttribute("xxx")一个session值,判断是否为null
即可。

高级点的就用事件
回复
加载更多回复
相关推荐
发帖
Web 开发
创建于2007-09-28

8.0w+

社区成员

Java Web 开发
申请成为版主
帖子事件
创建了帖子
2001-11-12 10:54
社区公告
暂无公告