码迷,mamicode.com
首页 > Web开发 > 详细

ASP.NET实现在线人员实时显示

时间:2015-02-01 23:04:52      阅读:228      评论:0      收藏:0      [点我收藏+]

标签:

在最近的学习中,参考其他资源,做了一个简单的在线人员显示的功能,总结了一下,思路如下:

1、定义一个全局的内存来作为在线人员列表

2、通过实时判断用户Session值,来判断某个用户的登录或离线

3、对于用户的上线和离线,通过添加用户到内存中,或删除内存中的用户列表中的用户来实现

下面是实现该功能的类:

  1 public static class UserOnline
  2 {
  3     /// <summary>
  4     /// 获取或设置在线列表
  5     /// </summary>
  6     public static Hashtable OnlineUserList
  7     {
  8         get
  9         {
 10             if (HttpContext.Current.Application["OnlineUserList"] == null)
 11             {
 12                 Hashtable onlineUserList = new Hashtable();
 13                 HttpContext.Current.Application["OnlineUserList"] = onlineUserList;
 14             }
 15 
 16             return (Hashtable)HttpContext.Current.Application["OnlineUserList"];
 17         }
 18         set
 19         {
 20             HttpContext.Current.Application["OnlineUserList"] = value;
 21         }
 22     }
 23 
 24     /// <summary>
 25     /// 添加在线成员
 26     /// </summary>
 27     public static bool OnlineUserList_Add(string key, string value)
 28     {
 29         try
 30         {
 31             if (OnlineUserList.Contains(key))
 32                 OnlineUserList[key] = value;
 33             else
 34                 OnlineUserList.Add(key, value);
 35             return true;
 36         }
 37         catch
 38         {
 39             return false;
 40         }
 41     }
 42 
 43     /// <summary>
 44     /// 添加在线成员
 45     /// </summary>
 46     public static bool OnlineUserList_Add(string key)
 47     {
 48         string value = DateTime.Now.ToString();
 49         return OnlineUserList_Add(key, value);
 50     }
 51 
 52     /// <summary>
 53     /// 离线删除用户
 54     /// </summary>
 55     public static bool OnlineUserList_Delete(string key)
 56     {
 57         bool re = false;
 58         if (OnlineUserList.Contains(key))
 59         {
 60             Hashtable userList = OnlineUserList;
 61             userList.Remove(key);
 62             OnlineUserList = userList;
 63             return true;
 64         }
 65         return re;
 66     }
 67 
 68     /// <summary>
 69     /// 判断用户是否在线
 70     /// </summary>
 71     public static bool UserIsOnline(string adminName)
 72     {
 73         OnlineClearUserOutTimeInOnLineList();
 74         return OnlineUserList.Contains(adminName) ? true : false;
 75     }
 76 
 77     /// <summary>
 78     /// 删除超时在线用户
 79     /// </summary>
 80     public static void OnlineClearUserOutTimeInOnLineList()
 81     {
 82         int OnlineTimeOut = 20;
 83         Hashtable list = new Hashtable();
 84         Hashtable temList = new Hashtable();
 85         list = OnlineUserList;
 86         temList = new Hashtable(list);
 87         foreach (DictionaryEntry de in temList)
 88         {
 89             //删除超时
 90             DateTime onlineTime = Convert.ToDateTime(de.Value);
 91             TimeSpan timeSpan = DateTime.Now - onlineTime;
 92 
 93             //在线时间和当前时间间隔大于超时分钟数就删除(注:用户非法关闭浏览器)
 94             if (timeSpan.TotalMinutes >= (double)OnlineTimeOut)
 95             {
 96                 list.Remove(de.Key);
 97             }
 98 
 99         }
100 
101         OnlineUserList = list;
102     }
103 
104 }

在用户登录成功的时候,添加改用户的惟一值到内存列表中

该用户的Session结束前进行删除即可。

ASP.NET实现在线人员实时显示

标签:

原文地址:http://www.cnblogs.com/cdz-sky/p/4266217.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!