注:没有使用JAVABEAN,全部是JSP

解决方案 »

  1.   

    http是非状态协议,所以服务器不知道客户端什么时候断开连接,一般采用定时查询的方法,例如30秒检查session还是否有效。
      

  2.   

    解决思路:
        提供给你一个解决思路,是否可行请你斟酌。
        
        1。客户端连接到服务器端后在客户端启动一个线程,该线程每10秒向服务器端发送一个信息,如“(用户名):I AM ONLINE”
        2。同时,服务器端也启动一个线程,当接收到客户端发送的信息时,将登录用户名分离出来,表示该用户仍然在线。
        3。将以上判断到还在线的用户名保存到另外的一个数组中(确认在线的用户清单)
        4。服务器端可以每半分钟或更长、更短的时间从以上的在线用户清单数组中把用户清单取出来,同时清空数组。    这样,当客户端退出聊天室后,客户端就不会向服务器端发送在线的信息,半分钟后服务器端就会将其从在线用户中删除(因其不会出现在确认在线的用户清单中)。
      

  3.   

    聊天室的话还可以这样:
    在聊天室的主页面的body的onUnload()事件里把用户删除
    可以认为只要他离开了主页面
    也就是离开了聊天室
      

  4.   

    longzu(龙族) :
    假如聊客在发呆或干别的事去了,而机器一直是开着的,岂不惨了?此时程序认为该聊客一直在线,
      

  5.   

    解决思路:
        提供给你一个解决思路,是否可行请你斟酌。
        
        1。客户端连接到服务器端后在客户端启动一个线程,该线程每10秒向服务器端发送一个信息,如“(用户名):I AM ONLINE”
        2。同时,服务器端也启动一个线程,当接收到客户端发送的信息时,将登录用户名分离出来,表示该用户仍然在线。
        3。将以上判断到还在线的用户名保存到另外的一个数组中(确认在线的用户清单)
        4。服务器端可以每半分钟或更长、更短的时间从以上的在线用户清单数组中把用户清单取出来,同时清空数组。    这样,当客户端退出聊天室后,客户端就不会向服务器端发送在线的信息,半分钟后服务器端就会将其从在线用户中删除(因其不会出现在确认在线的用户清单中)。
    客户端是不是用一个iframe来进行这个操作?设置一个时间间隔,用javascript向服务器请求?
    我想知道还有没有更好的解决方法
      

  6.   

    用session不好吗?如果过期就删掉
      

  7.   

    谢谢大家!!我本来是用了一个FLAG在数据库里标示,如果在线,就不允许同名再次登陆;
    因为存在上面请教大家的问题,所以,我只好把这个限制条件去掉了。ship(红色战袍) :这个问题我可以解决,如果四分钟不说话,就用
    leshui(大象无形)(有物混成,先天地生) 的方法解决了。我就是不知道
    为什么有时候会每次都调用logout.jsp,有的时候按了注销按钮也没用,
    有的时候,明明注销成功了session也没有了,可是他竟然还可以说话!!
    这是正常的?还是程序有疏漏?感谢:longzu(龙族) 和yinxiaochun(青蛙) 的思路,我打算试一下!唉,昨天已经交件了,以上各位IF还GZ此问题可以继续讨论,ELSE我马上
    结贴!!