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;
} }

ASP.NET C# 实现实时用户在线的更多相关文章

  1. ASP.NET SignalR 与 LayIM2.0 配合轻松实现Web聊天室(九) 之 用 Redis 实现用户在线离线状态消息处理(一)

    前言 上一篇中简单讲解了用Redis缓存在线用户逻辑.篇幅也比较小,本篇将详细实现用户的上线下线通知.图片效果转换功能.而且,代码和开发思路都会详细介绍. 效果展示 目前有三个用户,user1,use ...

  2. Asp.net SignalR 让实时通讯变得如此简单

    巡更项目中,需要发送实时消息,以及需要任务开始提醒,于是便有机会接触到SignalR,在使用过程中,发现用SignalR实现通信非常简单,下面我思明将从三个方面分享一下: 一.SignalR是什么 A ...

  3. 在ASP.NET Core中使用百度在线编辑器UEditor

    在ASP.NET Core中使用百度在线编辑器UEditor 0x00 起因 最近需要一个在线编辑器,之前听人说过百度的UEditor不错,去官网下了一个.不过服务端只有ASP.NET版的,如果是为了 ...

  4. asp.net中如何防止用户重复点击提交按钮

    asp.net中如何防止用户重复点击提交按钮   asp.net 中防止因为网速慢等影响交互的问题导致用户可能点击多次提交按钮,从而导致数据库中出现多条重复的记录,经过亲自验证在网上找的方法,找到两个 ...

  5. Bucky – 免费开源的实时用户监控工具

    Bucky 是一个开源的实时用户监控工具,用于衡量用户在浏览器中使用 Web 应用程序时的性能.它可以自动测量你的网页需要多长时间来加载,Ajax 请求需要多长时间和各个函数需要实行多久. 您可能感兴 ...

  6. asp.net word ecxel类型文件在线预览

    asp.net word ecxel类型文件在线预览 首先得引用COM: Microsoft Excel 10 Object Library Microsoft Word 10 Object Libr ...

  7. java 网站用户在线和客服聊天

    注:本文来源于<java 网站用户在线和客服聊天> 这是应用到项目中的一个例子. 实现原理是将信息存储到Application域里面.然后使用Struts2 Action 用json格式的 ...

  8. Asp.net+WebSocket+Emgucv实时人脸识别

    上个月在网上看到一个用web实现简单AR效果的文章,然后自己一路折腾,最后折腾出来一个 Asp.net+WebSocket+Emgucv实时人脸识别的东西,网上也有不少相关资料,有用winform的也 ...

  9. js用img代替ajax js心跳 向服务器定时传送参数 主要计算用户在线时长

    html: <!doctype html><html><head><meta charset="utf-8"><title&g ...

随机推荐

  1. POI操作excle

    将根目录下的poi-3.6-20091214.jar和Lib目录下三个通用包 commons-logging-1.1.jar junit-3.8.1.jar log4j-1.2.13.jar拷贝到项目 ...

  2. iTOP-4418/6818开发板用户使用手册内容有哪些

                    更多内容分享,请继续期待 iTOP-6818开发板与4418开发板共兼容同一底板: 核心板:::::: 尺寸:50mm*60mm 高度:核心板连接器组合高度1.5mm ...

  3. 没有显示器如何SSH连接上树莓派

    1.在用读卡器烧录系统后先用Linux虚拟机连接上读卡器,修改 sudo gedit /etc/wpa_supplicant/wpa_supplicant.conf 加入 network={ ssid ...

  4. iOS 单选框

    iOS 单选框,可自定义横向和纵向显示,可定义显示的个数和内容,自定义间距,提供block 和代理方法可供使用,欢迎拍砖! github地址: https://github.com/joshuaGen ...

  5. mingw-gcc-9.0.1-i686-posix-sjlj-201903

    -------------------------------------------------------------------------------gcc version 9.0.1 201 ...

  6. ubuntu常用命令备忘

    1.把一个目录的文件拷贝另一个文件夹 sudo cp -p /home/likewei/lib/needlib/* /home/likewei/lib/11

  7. spool_sqlldr

    --0.制表符chr(9) 换行符chr(10) 回车符chr(13) windows下批处理.bat linux下批处理.shset echo offset feedback offset page ...

  8. Python base64编码,转图片

    我在做火车票抢票器的时候遇到一个问题,就是验证码提取的:一般验证码都是一些http请求的url,但是火车票网站遇到了我没有见过的以data:image/jpg;base64开头的字符串.现在我们就用P ...

  9. linux extglob模式 和rm反选

    前言 extglob模式开启之后Shell可以另外识别出5个模式匹配操作符,能使文件匹配更加方便. 不然不识别! 正文 #开启命令: shopt -s extglob #关闭命令: shopt -u ...

  10. .net基础学java系列(六)Java基础

    一.废话 .net学java为何一直没入坑?其实大家都知道,语法很相似,就是使用的习惯不同 稍微的语法差异 结构体系不同 IDE不同 类库集不同 各种框架不同 对于我来说,我一直被第三道坎拦住了,所以 ...