Topic: 求助jsp聊天室中刷新和用户退出的问题

  Print this page

1.求助jsp聊天室中刷新和用户退出的问题 Copy to clipboard
Posted by: beingo
Posted on: 2005-10-10 17:18

我下了一个JSP的聊天室,他是每过5秒自动刷新一次,所以就算用户关闭浏览器后,超过了session.timeout的时间,这个用户也在在线列表里,有什么办法解决这个问题呢,
改变刷新机制?还是做一个关闭浏览器后就自动退出的方法?

请高手帮我写出一段代码来实现(就是怎么解决这个问题),谢谢了,很急的

2.Re:求助jsp聊天室中刷新和用户退出的问题 [Re: beingo] Copy to clipboard
Posted by: rebirth
Posted on: 2005-10-14 10:23

1、可以设置一个静态的session注册器,类型可以是Map等。如
static Map reg_session=new HashMap();
key 是 userId ,value是一个自定义的java类型
这个java类型至少下面一些属性
public class SessionType(){
private java.util.Date opertime;//最近一次动作时间
private Long timeout;//超时时间。
private HttpSession session;//用户session
}
然后写个类提供方法:
register(...) //用户登录时将新的session注册进去, 如果已经存在,将session置无效,从map中去掉。这样可以防止重复登录。
unregister(...)//用户退出时将session从map中去掉。
updateoper(...)//用户做了动作后更新他的最近一次动作时间
scan(...)//每隔一定的时间扫描一次(可以在刷新时做,不过做得太频繁可能影响效率),将超时的用户用Map中去掉。
(写方法时注意同步控制)

2、在聊天室的主页面的unload方法调用一个logout.jsp,在这个jsp中调用unregister(...)方法将注册的session去掉。

3、显示在线列表是通过遍历reg_session来进行。

4、如果是session自动超时时也要调用logout.jsp将该session从reg_session中去掉。

3.Re:求助jsp聊天室中刷新和用户退出的问题 [Re: beingo] Copy to clipboard
Posted by: beingo
Posted on: 2005-10-17 16:35

明白了,谢谢了


   Powered by Jute Powerful Forum® Version Jute 1.5.6 Ent
Copyright © 2002-2021 Cjsdn Team. All Righits Reserved. 闽ICP备05005120号-1
客服电话 18559299278    客服信箱 714923@qq.com    客服QQ 714923