ASP.NET实现在线人员实时显示
在最近的学习中,参考其他资源,做了一个简单的在线人员显示的功能,总结了一下,思路如下:
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实现在线人员实时显示的更多相关文章
- 6.MIL采集和实时显示
前面讲到的都是离线的图像获取方法,实际中我们做机器视觉都是在线采集图像和处理,处理结果决定了计算机要给出的控制信号如电机运动等,这样就实现了实时视觉反馈运动.MIL中的采集需要Matrox采集板卡的支 ...
- python websocket网页实时显示远程服务器日志信息
功能:用websocket技术,在运维工具的浏览器上实时显示远程服务器上的日志信息 一般我们在运维工具部署环境的时候,需要实时展现部署过程中的信息,或者在浏览器中实时显示程序日志给开发人员看.你还在用 ...
- Markdown中实时显示数学公式的方法
Markdown中实时显示数学公式的方法 Markdown非常好用,但是对于数学公式的实时显示有一些缺陷,如何解决这一问题呢? 一.在线LaTex编辑 点击在线LaTeX编辑方式 在对话框中输入数学公 ...
- 运维开发:python websocket网页实时显示远程服务器日志信息
功能:用websocket技术,在运维工具的浏览器上实时显示远程服务器上的日志信息 一般我们在运维工具部署环境的时候,需要实时展现部署过程中的信息,或者在浏览器中实时显示程序日志给开发人员看.你还在用 ...
- ASP程序中调用Now()总显示“上午”和“下午”,如何解决?
ASP程序中调用Now()总显示这样的格式:“2007-4-20 下午 06:06:38”,我要的正确格式为“2007-4-20 18:06:38”,我已经通过控制面板==>区域和语言选项==& ...
- iNeuOS工业互联平台,WEB组态(iNeuView)集成rtmp和websocket视频元件,支持海康、大华等摄像头实时显示视频
目 录 1. 概述... 1 2. 平台演示... 2 3. 硬件摄像头... 2 4. 视频流协议转换管理... 2 5. 组态视频元件 ...
- 实时显示内容(Thread+Handler)
class LocThread extends Thread{ @Override public void run() { while (true){ try { Thread.sleep(99); ...
- 基于MATLAB的GUI(Graphical User Interface)音频实时显示设计
摘要:本文章的设计主要讲基于matlab的gui音频实时显示设计,此次设计的gui相当于一个简洁的音乐播放器,界面只有”录音“和”播放“两个控件,哈哈,够简洁吧.通过”录音“按钮可以实现声音从电脑的声 ...
- 使用Uploadify实现上传图片生成缩略图例子,实时显示进度条
不了解Uploadify的,先看看前一篇详细说明 http://www.cnblogs.com/XuebinDing/archive/2012/04/26/2470995.html Uploadify ...
随机推荐
- C# 钩子HOOK专题(1)
目录 基本概念 运行机制 钩子类型 作者 基本概念 钩子(Hook),是Windows消息处理机制的一个平台,应用程序可以在上面设置子程以监视指定窗口的某种消息,而且所监视的窗口可以是其他进程 ...
- Hadoop对小文件的解决方式
小文件指的是那些size比HDFS的block size(默认64M)小的多的文件.不论什么一个文件,文件夹和block,在HDFS中都会被表示为一个object存储在namenode的内存中, 每一 ...
- 目录启动CXF启动报告LinkageError异常以及Java的endorsed机制
本文纯属个人见解,是对前面学习的总结,如有描述不正确的地方还请高手指正~ Exception in thread "main" java.lang.LinkageError: JA ...
- HDU 5512 Meeting 博弈论
Meeting Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=5512 ...
- delphi Sender和Tag的用法1
Sender和Tag的用法 在它们共同的OnClick事件下返回单击的那个按钮的标题 unit Unit1;interfaceuses Winapi.Windows, Winapi ...
- C++输入输出流的重载
C++的流插入运算符“<<”和流提取运算符“>>”是C++在类库中提供的,所有C++编译系统都在类库中提供输入流类istream和输出流类ostream.cin和cout分别是 ...
- js new date详解
创建一个日期对象: var objDate=new Date([arguments list]); var ini_date=new Date(2014,7,0); //是代表7月最后一天 ,也就是2 ...
- Redis 有序集合(sorted set)
Redis 有序集合和集合一样也是string类型元素的集合,且不允许重复的成员. 不同的是每个元素都会关联一个double类型的分数.redis正是通过分数来为集合中的成员进行从小到大的排序. 有序 ...
- Android Service与Activity之间通信的几种方式
在Android中,Activity主要负责前台页面的展示,Service主要负责需要长期运行的任务,所以在我们实际开发中,就会常常遇到Activity与Service之间的通信,我们一般在Activ ...
- javascript 制作的美化select,利用cookie保存选择
可以看一下动画 下面是代码 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> ...