ASP.NET在线用户列表精确版——解决用户意外退出在线列表无法及时更新问题
日期:2007年8月6日 作者: 查看:[大字体 中字体 小字体]-
【原创作者】:丛兴滋(cncxz)[E-mail:cncxz@126.com]
【关 键 词】:xmlhttp ASP.NET在线用户列表 关闭浏览器 精确统计 单人登陆
【代码下载】:http://www.thisky.cn/down/onlineuser.rar最近所做的一个项目需要用到的在线用户列表,上网搜索了一下发现现有的解决方案对用户意外退出的处理均不是太理想。一般来说,用户离开系统的方式有三种:主动注销、会话超时、直接关闭浏览器,对于前两种,我们很容易便可将该用户从在线列表中清除,关键是第三种(很多用户都是直接关闭窗口的~~郁闷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分钟了。==========================================
具体实现如下:
1、 新建一个名为ActiveUser的类,存储单个活动用户数据。
/// <summary>
/// 单个在线用户数据,无法继承此类。
/// </summary>
public sealed class ActiveUser
{
private readonly string _ticket; //票据名称
private readonly string _username; //登陆用户名
private readonly string _truename; //登陆用户名
private readonly string _roleid; //角色
private readonly DateTime _refreshtime; //最新刷新时间
private readonly DateTime _activetime; //最新活动时间
private readonly string _clientip; //登陆IP - [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] [16] [17] [18] [19] [20] [21] [22] [23] [24] [25] [26] [27] [28] [29] 下一页
-
- ASP.NET在线用户列表精确版——解决用户意外退出在线列表无法及时更新问题 相关文章:
- ·如何卸载netware客户服务
- ·使用TenyQQ 快速升级为太阳用户
- ·腾讯QQ售前 售后客户服务咨询投诉热线电话
- ·客户端回调实现gridView无刷新分页
- ·XP用户:教你实用50招
- ·在jsp中用bean和servlet联合实现用户注册、登录
- ·首页用户登陆模板
- ·怎样突破局域网中对用户上网的限制简介
- ·XP用户:教你超强50招技巧(上)
- ·酷招:Win XP远程桌面也可以玩多用户
- ASP.NET在线用户列表精确版——解决用户意外退出在线列表无法及时更新问题 相关软件
- ·《跑跑卡丁车》最新客户端
- ·乱武天下 0.820 客户端
- ·《黑暗与光明》最新客户端
- ·《神泣》最新客户端
- ·《3D传世》最新客户端
- ·《RF:行会战争》最新客户端
- ·《明星3缺1Online》最新客户端
- ·《超级舞者》最新客户端
- ·Windows XP SP2 远程多用户登陆补丁 V1.1
- ·精英客户服务管理系统 V3.00
- 特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作
- 者.文章版权归文章原始作者所有.对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转
- 载的文章有版权问题请联系编辑人员,我们尽快予以更正. 转载请注明来源:http://www.hackhome.com
上一篇:inno setup教程,强烈推荐用inno setup打包VB软件,免费!压缩率高、使用简单
下一篇:Asp.net定时控件
精品推荐
热点TOP10
- ·C语言教程第六章:指针
- ·C/C++笔试、面试题目大汇总
- ·MSComm控件使用详解
- ·学生成绩管理系统实习
- ·Windows下C语言网络编程快速入门
- ·飞机订票系统设计
- ·c#.net连接access操作类
- ·进程调度模拟程序
- ·打字游戏
- ·C#基础概念二十五问
- ·makefile规则
- ·C语言的常用库函数使用方法分析及用途
- ·Windows编程基础 - 概述
- ·c语言中的结构(struct)和联合(union)简介
- ·一个简单的链表程序
- ·GDB 的文档
- ·C语言教程第五章:函数
- ·VC下调用ACM音频编程接口压缩Wave音频
- ·漫谈C++ Builder多线程编程技术
- ·利用C++实现的贪吃蛇游戏
特别推荐
- ·C#基础概念二十五问
- ·利用C#远程存取Access数据库
- ·入门教程:实例详解C++友元
- ·C语言基础教程(三)输入输出函数及控制流程语句
- ·VC下调用ACM音频编程接口压缩Wave音频
- ·如何在C/C++中调用Java
- ·设计的一个计算器类的源代码,很简陋哦,请各位高手不要见笑!
- ·gSOAP中内存的使用
- ·Windows下C语言网络编程快速入门
- ·C语言教程第六章:指针
- ·漫谈C++ Builder多线程编程技术
- ·学生成绩管理系统实习
- ·用C#实现pdf文件的完整性验证
- ·将程序从托管扩展 C++ 迁移到 C++/CLI(1)
- ·链表的c语言实现(六)
- ·C语言库函数 (D类字母)
- ·用AVIFile函数制做AVI文件基本步骤
- ·利用C++实现的贪吃蛇游戏
- ·Windows API-GDI入门基础知识详解(3)
- ·C语言库函数 (C类字母)
