实时判断用户是否在线的方法之一(转自CSDN上的一位朋友)。
来源:互联网 发布:js 动态 style属性 编辑:程序博客网 时间:2024/04/30 04:15
客户端定时向服务器报告在线信息并在服务器端登记.可用xmlhttp实现
不过实现起来有点复杂...
先用 javascript 写 xmlhttp
// JScript 文件
//用xmlhttp请求RefreshTime.aspx页
function TimeOut()
{
var xmlhttp = new ActiveXObject("Msxml2.XMLHTTP.5.0");
//异步方式获取数据
xmlhttp.open("POST","RefreshTime.aspx",true);
//这里 RefreshTime.aspx 是请求的页面 你要自己建立
xmlhttp.onreadystatechange=add;
function add()
{
if(xmlhttp.readyState==4)
{
}
}
xmlhttp.send(null);
}
//定时调用 每30秒就调用 RefreshTime.aspx 页面
window.setInterval("TimeOut()",30000);
下面是 RefreshTime.aspx 页面
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;
using System.Xml;
public partial class RefreshTime : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
ModifyMenu();
}
//更新xml数据库
public void ModifyMenu()
{
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(Server.MapPath("~/XML/Menu.xml"));
//获取Menu节点的所有子节点
XmlNodeList xmlList = xmlDoc.SelectSingleNode("NewDataSet").ChildNodes;
XmlNodeList xmlListTime = xmlDoc.GetElementsByTagName("RefreshTime");
//更新登陆用户的单个时间 Session["name"]
xmlDoc.SelectSingleNode("//Table[UserID='" + Session["UserID"].ToString() + "']").ChildNodes.Item(7).InnerText = DateTime.Now.ToString();
//这里DateTime.Now 是更新xml的用户时间拉.
xmlDoc.Save(Server.MapPath("~/XML/Menu.xml"));
}
}
因为是每 30秒就刷新一次所以最好不用sql数据库拉费资源.用XML
如果不更新的话就证明用户已经关闭IE和关机走人了.
在建立个online.aspx 页面判断 他是否走人没
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;
using System.Xml;
public partial class online : System.Web.UI.Page
{
//页面初始化事件
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
DeleteMenu();
}
}
//删除xml
public void DeleteMenu()
{
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(Server.MapPath("~/XML/Menu.xml"));
////获取Menu节点的所有子节点
XmlNodeList xmlList = xmlDoc.SelectSingleNode("NewDataSet").ChildNodes;
//获取每个纪录的活动时间 RefreshTime的节点
XmlNodeList node = xmlDoc.GetElementsByTagName("RefreshTime");
XmlNodeList nodeUserID = xmlDoc.GetElementsByTagName("UserID");
//统计RefreshTime节点的数量
int a = node.Count - 1;
for (int i = a; i >= 0; i--)
{
//如果活动时间没有刷新 并超过2分 就执行删除 node[i].InnerText是活动时间的字符串值
if (Convert.ToDateTime(node[i].InnerText.ToString()) < DateTime.Now.AddMinutes(0 - 2))
{
Response.Write(nodeUserID[i].InnerText.ToString() + "用户走人了");
//删除[xml数据库]相应的数据
xmlList[i].RemoveAll();
}
}
//保存xml文档
xmlDoc.Save(Server.MapPath("~/XML/Menu.xml"));
}
//刷新事件
protected void btn_Click(object sender, EventArgs e)
{
DeleteMenu();
}
}
你在就建立 xml数据就ok了..
<?xml version="1.0" standalone="yes"?>
<NewDataSet>
<Table>
<UserID>22003</UserID> 用户id
<UserName>总经办内务</UserName>用户名
<DeptName>总经理办公室</DeptName>所在部门
<PlatForm>WinNT</PlatForm>平台
<BrowseType>IE6</BrowseType>浏览器
<IPAddress>192.168.168.120</IPAddress>ip
<StartTime>2006-11-15T12:35:00+08:00</StartTime>登陆时间
<RefreshTime>2006-11-15T12:35:00+08:00</RefreshTime>刷新时间这个看好就刷新这个了这个不刷新了就代表走人了
<OnlineTime>0分钟</OnlineTime>在线多长时间了
</Table>
<Table>
<UserID>22004</UserID>
<UserName>财务测试一</UserName>
<DeptName>财务部</DeptName>
<PlatForm>WinNT</PlatForm>
<BrowseType>IE6</BrowseType>
<IPAddress>192.168.168.120</IPAddress>
<StartTime>2006-11-15T12:36:00+08:00</StartTime>
<RefreshTime>2006-11-15T12:38:00+08:00</RefreshTime>
<OnlineTime>2分钟</OnlineTime>
</Table>
</NewDataSet>
- 实时判断用户是否在线的方法之一(转自CSDN上的一位朋友)。
- 用PHP判断用户是否在线的方法
- 用PHP判断用户是否在线的方法
- 判断在线用户的方法
- 显示用户是否在线的方法 选择自 cqhand 的 Blog
- 显示用户是否在线的方法
- 显示用户是否在线的方法
- ASP显示用户是否在线的方法
- 判断用户是否在线
- javaweb查询所有登录的用户,判断是否在线
- 致CSDN上的朋友
- 一位朋友的到访
- SharePoint 判断用户在文件夹上是否有权限的方法
- 判断任意qq是否在线的简单方法
- Java TCP socket 判断对方是否在线的方法
- 转 一位朋友辞职引起的思考
- 判断网页是否伪静态的方法之一
- CSDN上的一位oracle大神
- 用VC控制iis的属性
- ControlDisk的方法
- 今天下了2006的第一场雪
- 在PB中自动注册Adaptive Server Anywhere 8.0 ODBC数据源
- Net Neutrality(网络中立) from 2006-10第九期
- 实时判断用户是否在线的方法之一(转自CSDN上的一位朋友)。
- 利用单元测试在每个层上对PHP代码进行检查
- P2P之NAT类型检测方法
- 北京下雪了
- SoC时代,软件比芯片重要
- Hibernate入门 - 包作用详解
- Deploy Java Web Develop Environment
- Oracle初学者入门指南-什么是Metalink?
- 网络游戏外挂编写初级教程