如果突然拔网线,那就实在没有办法建议你设置一个合理的超时时间,用超时判断用户是否在线。或则,记载用户打开的每个网页,在转移到别的页面或则关闭页面的时候,将打开的页面删除,当这个用户打开的网页数为零的时候就表示他已经离线。至于关闭页面的判断方式,可以用一个隐藏的iframe,在页面onunload事件时向服务器发一个请求解决

解决方案 »

  1.   

    如果在用户关闭浏览器时在servlet端将会话注销,这个方案决不可行。
    用户关闭浏览器,断开网络,死机等情况下,servlet都不能获得“用户已断开”的通知。
    记载用户打开网页数更不可取,你根本不知道用户会点链接到其他网站。所以你这个功能最好不要实现。如果一定要实现,只能内嵌一个隐藏的iframe,定期刷新,如30秒,服务器如果在指定时间内收不到请求,就认为用户已断开连接。可解决死机等问题。但此方法要耗费大量的服务器资源
      

  2.   

    关注一下,我们现在的系统中用的也是severlet listener,感觉效果也不是太好。