下文描述主要的在线用户列表实现的机制及各种机制的优缺点
1.心跳
在网页中设置“心跳”,异步更新刷新时间,服务器判断刷新时间间隔。当N秒不刷新时清除在线用户列表
缺点 :
[1] 如果是SSO系统,业务系统很多,给SSO服务器造成很大的压力
2.结合HttpSessionBindingListener实现在线用户
结合session,在session创建时触发listener中的事件,实现在线用户功能
缺点:
[1] 信息保存在application中,如果在线用户很多给服务器造成很大的压力(变通方法保存在数据库)
[2] 无法监听浏览器关闭事件及以外关机事件,导致在线用户列表中无法清除在线用户
网易就是采用这种方式实现在线用户列表
3. 基于cookie
类似javaeye,登陆的时候在cookie或数据库中标志一下,即使关闭浏览器也不会退出。因此这样保证了
在线用户列表的“准确性”,但是给网站带来了安全隐患。因此网易、搜狐均采用内存 cookie
大家有没有什么好的方式呢?