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

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

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

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

下面是实现该功能的类:

 public static class UserOnline
{
/// <summary>
/// 获取或设置在线列表
/// </summary>
public static Hashtable OnlineUserList
{
get
{
if (HttpContext.Current.Application["OnlineUserList"] == null)
{
Hashtable onlineUserList = new Hashtable();
HttpContext.Current.Application["OnlineUserList"] = onlineUserList;
} return (Hashtable)HttpContext.Current.Application["OnlineUserList"];
}
set
{
HttpContext.Current.Application["OnlineUserList"] = value;
}
} /// <summary>
/// 添加在线成员
/// </summary>
public static bool OnlineUserList_Add(string key, string value)
{
try
{
if (OnlineUserList.Contains(key))
OnlineUserList[key] = value;
else
OnlineUserList.Add(key, value);
return true;
}
catch
{
return false;
}
} /// <summary>
/// 添加在线成员
/// </summary>
public static bool OnlineUserList_Add(string key)
{
string value = DateTime.Now.ToString();
return OnlineUserList_Add(key, value);
} /// <summary>
/// 离线删除用户
/// </summary>
public static bool OnlineUserList_Delete(string key)
{
bool re = false;
if (OnlineUserList.Contains(key))
{
Hashtable userList = OnlineUserList;
userList.Remove(key);
OnlineUserList = userList;
return true;
}
return re;
} /// <summary>
/// 判断用户是否在线
/// </summary>
public static bool UserIsOnline(string adminName)
{
OnlineClearUserOutTimeInOnLineList();
return OnlineUserList.Contains(adminName) ? true : false;
} /// <summary>
/// 删除超时在线用户
/// </summary>
public static void OnlineClearUserOutTimeInOnLineList()
{
int OnlineTimeOut = ;
Hashtable list = new Hashtable();
Hashtable temList = new Hashtable();
list = OnlineUserList;
temList = new Hashtable(list);
foreach (DictionaryEntry de in temList)
{
//删除超时
DateTime onlineTime = Convert.ToDateTime(de.Value);
TimeSpan timeSpan = DateTime.Now - onlineTime; //在线时间和当前时间间隔大于超时分钟数就删除(注:用户非法关闭浏览器)
if (timeSpan.TotalMinutes >= (double)OnlineTimeOut)
{
list.Remove(de.Key);
} } OnlineUserList = list;
} }

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

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

ASP.NET实现在线人员实时显示的更多相关文章

  1. 6.MIL采集和实时显示

    前面讲到的都是离线的图像获取方法,实际中我们做机器视觉都是在线采集图像和处理,处理结果决定了计算机要给出的控制信号如电机运动等,这样就实现了实时视觉反馈运动.MIL中的采集需要Matrox采集板卡的支 ...

  2. python websocket网页实时显示远程服务器日志信息

    功能:用websocket技术,在运维工具的浏览器上实时显示远程服务器上的日志信息 一般我们在运维工具部署环境的时候,需要实时展现部署过程中的信息,或者在浏览器中实时显示程序日志给开发人员看.你还在用 ...

  3. Markdown中实时显示数学公式的方法

    Markdown中实时显示数学公式的方法 Markdown非常好用,但是对于数学公式的实时显示有一些缺陷,如何解决这一问题呢? 一.在线LaTex编辑 点击在线LaTeX编辑方式 在对话框中输入数学公 ...

  4. 运维开发:python websocket网页实时显示远程服务器日志信息

    功能:用websocket技术,在运维工具的浏览器上实时显示远程服务器上的日志信息 一般我们在运维工具部署环境的时候,需要实时展现部署过程中的信息,或者在浏览器中实时显示程序日志给开发人员看.你还在用 ...

  5. ASP程序中调用Now()总显示“上午”和“下午”,如何解决?

    ASP程序中调用Now()总显示这样的格式:“2007-4-20 下午 06:06:38”,我要的正确格式为“2007-4-20 18:06:38”,我已经通过控制面板==>区域和语言选项==& ...

  6. iNeuOS工业互联平台,WEB组态(iNeuView)集成rtmp和websocket视频元件,支持海康、大华等摄像头实时显示视频

    目       录 1.      概述... 1 2.      平台演示... 2 3.      硬件摄像头... 2 4.      视频流协议转换管理... 2 5.      组态视频元件 ...

  7. 实时显示内容(Thread+Handler)

    class LocThread extends Thread{ @Override public void run() { while (true){ try { Thread.sleep(99); ...

  8. 基于MATLAB的GUI(Graphical User Interface)音频实时显示设计

    摘要:本文章的设计主要讲基于matlab的gui音频实时显示设计,此次设计的gui相当于一个简洁的音乐播放器,界面只有”录音“和”播放“两个控件,哈哈,够简洁吧.通过”录音“按钮可以实现声音从电脑的声 ...

  9. 使用Uploadify实现上传图片生成缩略图例子,实时显示进度条

    不了解Uploadify的,先看看前一篇详细说明 http://www.cnblogs.com/XuebinDing/archive/2012/04/26/2470995.html Uploadify ...

随机推荐

  1. Struts 2.x异常:Unable to load configuration..../WEB-INF/lib/struts2-convention-plugin-2.1.6.jar!/struts-plugin.xml:30:119

    Struts 2.x异常:Unable to load configuration..../WEB-INF/lib/struts2-convention-plugin-2.1.6.jar!/strut ...

  2. MATLAB新手教程

    MATLAB新手教程   .MATLAB的基本知识 1-1.基本运算与函数    在MATLAB下进行基本数学运算,仅仅需将运算式直接打入提示号(>>)之後,并按入Enter键就可以.比如 ...

  3. Javascript Design Patterns - Js Class

    JavaScript is a class-less language, however classes can be simulated using functions. eg: // A car ...

  4. Codeforces Round #326 (Div. 2) A. Duff and Meat 水题

    A. Duff and Meat Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/588/probl ...

  5. setuptools的使用

    1.什么是setuptools setuptoolssetuptools是 Python Enterprise Application Kit(PEAK)的一个副项目,是Python distutil ...

  6. glsl水包含倒影的实现(rtt) [转]

    转自 http://blog.sina.com.cn/s/blog_78ea87380101eixi.html 此文实现一个简单地水面倒影效果,通过rtt相机 获取倒影纹理, 水的基本实现方法(参考前 ...

  7. thinkphp分配数组

    TestAction.class.php 的edit方法中 $this->assign('list',array('one'=>'a','two'=>'b')); 后,在edit.h ...

  8. iOS开发——设备篇&ios8文件路径

    ios8文件路径 1,之前版本的(比如iOS7)的文件路径如下:  app路径  /var/mobile/Applications/59C84B75-0900-43D6-AD6F-AB9731F064 ...

  9. int a[5]={}, &a+1与(int*)a+1的区别

    #include <iostream> #include <typeinfo> using namespace std; int main() { int b, *pb; ch ...

  10. 【ZZ】Java : 一个帝国的诞生 & 假如时光能够倒流, 我会这么学习Java

    Java : 一个帝国的诞生 http://dy.qq.com/article.htm?id=20160523A06XFS00 写的很有意思,一下子了解了JAVA的历史. 假如时光能够倒流, 我会这么 ...