注册 登录
编程论坛 J2EE论坛

求助!如何在JSP聊天室中显示在线人数?

wangji666666 发布于 2006-09-07 09:28, 2013 次点击
聊天室人员现在能正常退出,可是万一断线或者是死机的话,该用户还是显示在线。
如何才能使判断他是否还在线,并使他执行我所做的退出程序leave.jsp?
11 回复
#2
wangji6666662006-09-07 11:44
有人能帮我想想办法吗?
急啊!
#3
独孤无痕2006-09-07 12:26
可以通过判断他说最后一句话的时间来判断
也就是说比如他不说话5分钟就会自动退出. 这个是可以实现的
#4
wangji6666662006-09-07 13:30
但是老总一直挂在上面不说话,怎么办?
是否能设置个监听,如果用户断开了服务器的话就执行leave.jsp
如果可以的话该怎么做?
#5
独孤无痕2006-09-08 12:18
每隔5分钟获取一次在线用户的IP.
获取不到 就踢除
怎样?
#6
神vLinux飘飘2006-09-08 13:00
在Session中做手脚,因为每个Session都有自己的维持时间,到了时间仍然没有信息交流则自动销毁

Session有个销毁的方法,继承并且重写这个类的销毁方法即可。
具体可以参考Open Session In View的做法。
#7
luyihuaa52012007-09-02 00:53
楼主,可不可以把你的原代码给我看看呀!我们最近也要做个用JSP做的聊天室,不用数据库。
我的邮箱luyihuaa5201@163.com
#8
wyq032007-09-05 11:24

给你说种方法,使用application,当用户进入时(ID或用户名),把其压入application中,可以已字符串形式压入,已特定符号作为分割符.然后使用StringTokenizer 函数,进行区分

StringTokenizer user=new StringTokenizer(online1,",");
int onlinenum=user.countTokens();
这就是在线人数.

还有一点比较重要,就是要定时刷新拉.可以每5分钟刷新1次session , 用session 和application做比较.这样就可以避免用户停电还在线的问题.
另外刷新可以使用ajax来写(俗称 无刷新技术).

这样就解决了,楼主,和楼上的问题了!~

#9
想你的天空2007-09-07 16:00
session.设置存活时间();
#10
tm_lan2007-09-07 21:06

楼主能否共享下你的源文件?我也在做这东西,想对比参考一下!
邮箱:tm_lan@yahoo.com.cn
谢啦~~~

#11
ningkun2007-09-15 22:45
给我也传一 个吧
382878875@qq.com
#12
无缘今生2007-09-15 23:15
可以为session设置一个最大有效时间:setMaxInactiveTime()(好像是这个函数吧,记得不太清楚),它是以毫秒为各单位的。

然后获取用户最后一次访问session的时间:getLastAccessTime(),再用当前时间减去最后访问时间,如果大于你设置的最大等待时间,就认为用户已经下线。
1