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

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

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结束前进行删除即可。

时间: 2024-10-29 19:10:16

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

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

功能:用websocket技术,在运维工具的浏览器上实时显示远程服务器上的日志信息 一般我们在运维工具部署环境的时候,需要实时展现部署过程中的信息,或者在浏览器中实时显示程序日志给开发人员看.你还在用ajax每隔段时间去获取服务器日志?out了,试试用websocket方式吧 我用bottle框架,写了个websocket服务端,浏览器连接到websocket server,再用python subprocess获取远程服务器的日志信息,subprocess,就是用Popen调用shell的sh

python实现websocket服务器,可以在web实时显示远程服务器日志

一.开始的话 使用python简单的实现websocket服务器,可以在浏览器上实时显示远程服务器的日志信息. 之前做了一个web版的发布系统,但没实现在线看日志,每次发布版本后,都需要登录到服务器上查看日志,非常麻烦,为了偷懒,能在页面点几下按钮完成工作,所以这几天查找了这方面的资料,实现了这个功能,瞬间觉的看日志什么的,太方便了,以后也可以给开发们查日志,再也不用麻烦运维了,废话少说,先看效果吧. 二.代码 在实现这功能前,看过别人的代码,发现很多都是只能在web上显示本地的日志,不能看远程

ASP.NET Core 开发人员异常页面

原文:ASP.NET Core 开发人员异常页面 UseDeveloperExceptionPage 中间件 我们谈谈在 Startup 类的 Configure()方法中以下代码: public void Configure(IApplicationBuilder app, IHostingEnvironment env) { if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); } app.UseFileServer(); a

获取在线人员数量

package com.mango.web.listener;import javax.servlet.http.HttpSession;import java.util.HashMap;/** * * @author CrazyMango * */public class MySessionContext { private static MySessionContext instance; private HashMap<String,HttpSession> mymap; private

实时显示iOS编写UI代码效果

编写iOS应用UI的方式大概有两种,一种是Storyboard/Xib,另一种是手写代码.采用Storyboard/Xib方式组织UI,由于提供可视化的特性,只要从UI库中拖动UI控件,便可以显示结果,极大地提高开发速度.但面临一个问题就是多人协作开发,由于所有的UI都放在同一个Storyboard文件中,使用Git/SVN合并代码就会出现冲突.多人协作开发还不是主要问题,有人提出可以创建多个Storyboard来分开UI编写,而Storyboard/Xib最主要问题是代码复用性比较差.所以有些

ruby on rails 网页上如何实时显示服务器网速?

要在网页上实时显示网速,需要实时请求服务器(由于许多浏览器不支持web socket,这里还是用ajax轮询的方式),这里的服务器以centos为例,使用sysstat,不同的服务器,可能需要不同的软件支持. 一.centos里安装sysstat yum  install sysstat 安装完成后,使用sar -V查看 二.sar的使用 首先使用ifconfig查看使用的网上,确认一个要查看的网卡的名称,这里我使用的是eth0 然后使用sar获取网速: sar -n DEV 1 1 | gre

实时显示系统时间

1.概述 在浏览很多网站时,都会发现在网站中加入了显示当前系统时间的功能,在网页中显示当前系统时间,不仅可以方便浏览者掌握当前时间,而且还美化了网页. 2.技术要点 利用Date对象来实现.首先创建一个表示当前系统时间的Date()对象,然后通过Date对象的getXxx()方法获得当前系统时间的年.月.日.小时.分.秒和星期的值,接下来将获得的这些值组合成一个日期时间字符串,并将日期时间字符串设置成为<div>标签的内容,最后通过window对象的setTimeout()函数每隔1秒调用一个

asp.net中当服务器出错时显示指定的错误页面

http://blog.csdn.net/helloxiaoyu/article/details/2943537 此篇文章描述了当异常再ASP.NET中发生时怎样使用C#.NET代码去拦截和相应异常.ASP.NET在异常处理方面比传统的ASP更优越.在ASP.NET中,允许在应用程序的各个层面中处理异常.ASP.NET的新特性ASP.NET为捕获并处理异常提供了更多的便利.在传统的ASP程序中,我们用“On Error Resume Next”(或Jscript的Try-catch)来处理异常.

基于Jquery插件Uploadify实现实时显示进度条上传图片

网址:http://www.jb51.net/article/83811.htm 这篇文章主要介绍了基于Jquery插件Uploadify实现实时显示进度条上传图片的相关资料,感兴趣的小伙伴们可以参考一下 先了解了解Uploadify,具体内容如下 Uploadify是一个简单易用的多文件上传方案.作为一个Jquery插件,Uploadify使用简单,并具有高度的定制性. Uploadify特性: Uploadify简单说来,是基于Jquery的一款文件上传插件.它的功能特色总结如下: 1).支