如何处理客户离线

wuxing2006 2006-11-21 03:38:24

在服务端记录着在线客户 想在客户离线时 如:关机,非法关闭IE 等情况下

把刻客户从在线客户中移除

...全文
306 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
wuxing2006 2006-11-23
  • 打赏
  • 举报
回复
现在有个网站商务通的BS 非法离线 可以实时触发 不知道怎么实现的
zhgu999 2006-11-22
  • 打赏
  • 举报
回复
技术用 xml+xmlhttp(定时刷新,也就是定时检测了) +sql数据库(保存用户信息)

http://blog.csdn.net/cncxz/archive/2005/07/18/427778.aspx 你可以参考这个.

最近所做的一个项目需要用到的在线用户列表,上网搜索了一下发现现有的解决方案对用户意外退出的处理均不是太理想。一般来说,用户离开系统的方式有三种:主动注销、会话超时、直接关闭浏览器,对于前两种,我们很容易便可将该用户从在线列表中清除,关键是第三种(很多用户都是直接关闭窗口的~~郁闷ing),程序无法捕获窗口关闭的精确时间,只能等到会话超时后在能将该用户清除出在线列表,假设我们设置会话超时时间为60分钟,而用户登陆系统随便浏览一个页面就以关闭浏览器的方式退出的话,我们要在将近1小时后才能从在线列表中将该用户清除出去(想象一下,系统显示n多人在线,可能除了你之外其他的n-1人都关机走人了,汗一个先```),而本文将尝试寻找一个解决方案把这种尴尬降至最低。
我的大概思路是,给每在线用户增加一个RefreshTime属性,建立一个负责将当前用户的RefreshTime属性设置为当前时间的单独页面(Refresh.aspx),然后在系统的主要页面(也可以是所有页面)中通过xmlhttp不断地请求Refresh.aspx页面,一旦用户关闭了与本系统相关的所有窗口,即以直接关闭浏览器的方式退出系统,那么该用户的RefreshTime属性便不会自动更新了,我们再设置一个自动刷新的超时时间(这个要比会话超时短很多_refreshTimeout),当发现某用户超过_refreshTimeout的时间没有自动刷新,就能判定该用户已经以直接关闭浏览器的方式退出了。
假设我们设置会话超时时间为60分钟,自动刷新超时时间为1分钟,在客户端通过xmlhttp每隔25秒(之所以不设1分钟,是防止网速慢的时候访问Refresh.aspx超时,个人感觉,不一定正确)访问一次Refresh.aspx页面,在用户登陆、用户注销、检测用户是否在线的时候都执行清理超时用户(包括会话超时和自动刷新超时)操作,这样一来,在线用户列表的统计误差就由60分钟降至1分钟了。
==========================================
tete 2006-11-22
  • 打赏
  • 举报
回复
无法完全实时吧
wuxing2006 2006-11-22
  • 打赏
  • 举报
回复
定时检测 在服务端检测 ?????
zhuyt0828 2006-11-22
  • 打赏
  • 举报
回复
Session_End可以,但是一般人都是直接关闭网页的,所以要等session超时了,你才能处理
除非你定时检测,可以自己控制离线处理的实时性
稍微有点无敌 2006-11-22
  • 打赏
  • 举报
回复
定时检测啊
wuxing2006 2006-11-22
  • 打赏
  • 举报
回复
onunload 吧 老兄呵呵 这个在非法关闭时还是没效

不知道在非法关闭浏览器时能不能触发 Session_End
cgl1983 2006-11-21
  • 打赏
  • 举报
回复
onload时用js给程序发通知(ajax),这样及时吗?
wuxing2006 2006-11-21
  • 打赏
  • 举报
回复
没有别的方案吗 记得看到过一次 用 TCP 连接还是什么的 望高手支招
buyi2004 2006-11-21
  • 打赏
  • 举报
回复
非法关闭浏览器后,会话仍然存在,要等到它自动过期,需要一段时间
daishengs 2006-11-21
  • 打赏
  • 举报
回复
好像总要延时的,要做到接近实时,比较困难。
hegang888888888 2006-11-21
  • 打赏
  • 举报
回复
session_end里面删除
shoutor 2006-11-21
  • 打赏
  • 举报
回复
这个问题总是有偏差的,一般都在global文件中处理
keystudio 2006-11-21
  • 打赏
  • 举报
回复
Global.asax里解决不了吗?

学习.....
lizhizhe2000 2006-11-21
  • 打赏
  • 举报
回复
呵呵,这个问题还没有一个完善的解决方案呢!
wuxing2006 2006-11-21
  • 打赏
  • 举报
回复
把此客户从在线客户中移除

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧