ASP.NET实现用户在线检测的类源码

ASP.NET实现用户在线检测的类源码

//online.cs(用户在线检测) 
/*程序实现思路:

该用户有以下几个属性: 
name:用户名 
sessionID:用户ID,通过它唯一表示一个用户 
iswhere :附加信息,用户当前所在位置 
lasttime:用户登陆时间 
curtime:本次刷新时间

在客户端,使用一个IFRAME,装载一个刷新页面,每隔XX秒更新一下他的名字对应的curtime,就表示他仍然在

在服务器端,建立一个守护线程,每隔固定时间就运行一遍,然后判断当前所有用户列表中的时间间隔是否超出了规定的时间,如果超出,则将该用户从在线列表中删除,这样就可以做到检测用户是否在线了,而如果再单独 
写个用户离线后的处理,就可以解决好多人问到的:用户意外吊线后的处理。 
*/

#define DEBUG

using System; 
using System.Data; 
using System.Data.SqlClient; 
using System.Collections ; 
using System.Threading ; 
using System.Web; 
using System.Diagnostics;

namespace SohoProject 

//定义了一个结构 
public struct User 

public string name; 
public DateTime lasttime; 
public DateTime curtime; 
public string sessionid; 
public string ip; 
public string iswhere; 
}

public class OnLineUser 

private static DataTable _alluser;

//只读属性 
public DataTable alluser{ 
get{return _alluser;} 
}

public OnLineUser() 

if(_alluser==null) 

//define user list 
// Declare variables for DataColumn and DataRow objects. 
_alluser = new DataTable("onlineuser");

DataColumn myDataColumn;

// Create new DataColumn, set DataType, ColumnName and add to DataTable. 
myDataColumn = new DataColumn(); 
myDataColumn.DataType = System.Type.GetType("System.String"); 
myDataColumn.ColumnName = "name"; 
myDataColumn.AutoIncrement = false; 
myDataColumn.Caption = "name"; 
myDataColumn.ReadOnly = false; 
myDataColumn.Unique = false; 
_alluser.Columns.Add(myDataColumn);


// Create sessionid column. 
myDataColumn = new DataColumn(); 
myDataColumn.DataType = System.Type.GetType("System.String"); 
myDataColumn.ColumnName = "sessionid"; 
myDataColumn.AutoIncrement = false; 
myDataColumn.Caption = "sessionid"; 
myDataColumn.ReadOnly = false; 
myDataColumn.Unique = true; 
_alluser.Columns.Add(myDataColumn);

// Create ip column. 
myDataColumn = new DataColumn(); 
myDataColumn.DataType = System.Type.GetType("System.String"); 
myDataColumn.ColumnName = "ip"; 
myDataColumn.AutoIncrement = false; 
myDataColumn.Caption = "ip"; 
myDataColumn.ReadOnly = false; 
myDataColumn.Unique = false; 
_alluser.Columns.Add(myDataColumn);

// Create iswhere column. 
myDataColumn = new DataColumn(); 
myDataColumn.DataType = System.Type.GetType("System.String"); 
myDataColumn.ColumnName = "iswhere"; 
myDataColumn.AutoIncrement = false; 
myDataColumn.Caption = "iswhere"; 
myDataColumn.ReadOnly = false; 
myDataColumn.Unique = false; 
_alluser.Columns.Add(myDataColumn);

// Create iswhere column. 
myDataColumn = new DataColumn(); 
myDataColumn.DataType = System.Type.GetType("System.DateTime"); 
myDataColumn.ColumnName = "lasttime"; 
myDataColumn.AutoIncrement = false; 
myDataColumn.Caption = "lasttime"; 
myDataColumn.ReadOnly = false; 
myDataColumn.Unique = false; 
_alluser.Columns.Add(myDataColumn);

// Create iswhere column. 
myDataColumn = new DataColumn(); 
myDataColumn.DataType = System.Type.GetType("System.DateTime"); 
myDataColumn.ColumnName = "curtime"; 
myDataColumn.AutoIncrement = false; 
myDataColumn.Caption = "curtime"; 

ASP.NET实现用户在线检测的类源码,古老的榕树,5-wow.com

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。