怎样判断一个用户是否在线?

zhouzm 2003-04-09 10:51:46
一般是怎样判断一个用户是否在线?是否用数据库来保存用户状态,如果登陆则把用户状态设置为在线,如果用户关闭网页,怎样判断用户不在线?
...全文
126 点赞 收藏 18
写回复
18 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
renyong 2003-04-09
vick(瞌睡虫)
reduce()里submit一个request
回复
renyong 2003-04-09
kyouyouCafe(kyouyou

http://expert.csdn.net/Expert/topic/1637/1637521.xml?temp=.3022119
回复
vick 2003-04-09
hch9230(走路的人)

能知道用户关闭窗口的,我曾经亲自做过聊天室!
<body onunload='reduce()'>

在这个reduce()里可以作处理,把application中的该用户减去!

请问你怎么用js来处理java函数和方法?
ASP差不多,因为有active x嘛
回复
kyouyouCafe 2003-04-09
我也想知道session的有效时间是多少?
可以改吗?
回复
手艺人杨柳 2003-04-09
going down
回复
super_zzw 2003-04-09
http://expert.csdn.net/Expert/topic/1547/1547682.xml?temp=.9748041
回复
renyong 2003-04-09
njyyao(yaoyao) 严重同意

方法有很多,可以将登陆的用户放在一个hashtable里,再将这个hashtable放在app里。
每个用户对象里放入这个用户上次动作时间。

或是将所有登陆的用户放在一个stateful session bean里,和上面的方法大同小易。

或是对每个登陆的用户都建一个stateful session bean,当这个session bean被
passivate的时候,视为用户超时,但是问题是session bean被passivate的时机我们
无法控制,weblogic里可以设两个参数控制,但是并不能绝对的控制passivate的时机,
哪位大侠对这个有研究,希望不吝赐教。

有关在线用户的问题是,如果用户不是点“退出”,而是:
1,用户关闭窗口,可以用onunload()解决
2,用户长时间无动作。session失效。但是session被destroy的时候,我们有什么方法
可以感知?例如weblogic里,一个session失效,as会出现什么事件?如果没有我们可以
感知的事件,那是不是可以定时的检查user hashtable里各个用户的上次动作时间,如果
超时,我们可以将这个用户从user hashtable里去掉,这个定时检查怎么实现?哪位大侠
有好的办法。
回复
secrets001 2003-04-09
出个主意,5秒自动提交,如果一段时间(10秒,考虑网络延时)没有受到该用户的信息,就可认为它吊线了
回复
tingod 2003-04-09
to 13060939425(我是煤碳商人)

没试验过,不过估计可以吧。
session超市登出的话,可以考虑保存所有session id而非用户名
回复
hch9230 2003-04-09
能知道用户关闭窗口的,我曾经亲自做过聊天室!
<body onunload='reduce()'>

在这个reduce()里可以作处理,把application中的该用户减去!
回复
13060939425 2003-04-09
to tingod(┞┧○┟┦○) :
在application中,我只用过上下文getServletContext().getAttribute()
我在用户登录时,把它的登录信息往上下文中放,再做一个登出程序,让他删除上下文,行吗?


如果,它没有登出,也没有<body onClose>,而是通过session超时登出的,怎么办??
回复
tingod 2003-04-09
调用js的事件
<body onClose='fun()'>
回复
zhouzm 2003-04-09
最关键的是我怎么知道用户关闭窗口了?上次我做的聊天室也有这个问题。
回复
njyyao 2003-04-09
将登录的用户ID放在一个Hashtable里。
具体去看Hashtable的API。
回复
zhouzm 2003-04-09
to tingod(┞┧○┟┦○) :我怎么知道用户关闭窗口?
回复
moumouren 2003-04-09
不能用数据库吧,直接判断session吧,这就是bs结构的一个弱点
因为http协议是无政府状态的,你reponse之后,你就失去了对客户端的控制
回复
tingod 2003-04-09
可以考虑在application中用一个变量来保存所有登陆用户信息。
用户登陆后把用户名或其他相关信息追加到该变量,用户注销或关闭窗口的时候在变量中把该用户信息消除。
回复
Brain 2003-04-09
实现HttpSessionBindingListener接口,给一个例子:
http://www.javaresearch.org/article/showarticle.jsp?column=2&thread=2164
回复
发帖
Web 开发
创建于2007-09-28

8.0w+

社区成员

Java Web 开发
申请成为版主
帖子事件
创建了帖子
2003-04-09 10:51
社区公告
暂无公告