浏览网页的过程中当用户在非正常情况下下线时(断电、拔掉网线等),怎样判定此用户已经下线了呢?
尽量是用Java实现,告诉我思路就行了,谢谢!!!

解决方案 »

  1.   

    应用服务器session有超时时间,你在程序中写个sessionListener去监听,到了时间就表示下线了
      

  2.   

    tomcat设置session的消亡时间,如果到时间,session自动关闭,证明用户下线了
      

  3.   

    这种方法是一种思路,一般默认的session超时时间是半小时,但这样会不灵敏。也就是说用户掉线半小时后服务器才能知道他掉线了。但如果将时间设置的过短(比如5分钟),用户只要5分钟内没有任何操作session就会断掉,如果session中有登录信息也同时会丢失。但这也是session失效,并不能说明是像断电或拔掉网线等那些非正常情况。如果检测非正常情况短线有一种思路,就是在页面端每隔一个固定时间向服务器发送一个带身份的信息,服务器接收到这个信息后说明这个身份的用户正在线上,如果他断电或者其他什么情况掉线了,则服务器在固定时间内没有接受到这个用户发送来的信息,那就说明这个用户掉线了。这样做可以把这个功能跟session分开,因为session就算用户没有断电,如果他隔一段时间没有任何操作就自动断掉了,不能说明是用户在非正常情况下断掉的。不过这样做的系统开销会大一些。
      

  4.   

    这个不错 你想自己控制 那么,自己实现一个就好了,缺点是 每个页面都 需要一直 判断,个人感觉最好不要改 session 时间, 因为session 不仅仅是给你 判断是否在线 用的
      

  5.   

    我更认同3楼的建议,session不能做到即时判断
      

  6.   

    t_userid,name,mm,t_tsso
    id,name,date在登录时,在网页top或left里写一个ajax按每6秒(时间自己设定)去更改t_sso表的时间,应为这两个页面大多数情况下的网站都是不变的,然后在在判断用户是否在线时可以先获取系统时间减去查询t_sso表里的时间是否大于6,否在线,是离线,注意时间进制,这也可以做为一个单点用户登录,就是说在这登录了,在打开一个网页在进行登录就不能登录。
      

  7.   

    9楼的服务器端得方法 显然不怎么可行 要对数据库进行操作
    而且每隔6秒 或者 更短一次  如果访问量一大 服务器的负载是多重可想而知这个地方我感觉把你说的那个时间放到对应用户的session里做 更合适
    但是我想不通 是如何实现的??难道要一个用户登录的 就创建一个线程专门进行处理??
    给个思路
      

  8.   

    这种问题好老了。到现在也没人真的解决。别想太多了。跟据session做个大概判断就得了。3楼的看似可行,但也就是理论上。实际用起来会有很大问题。