客户端定时向服务器报告在线信息并在服务器端登记.可用xmlhttp实现

  
  客户端定时向服务器报告在线信息并在服务器端登记.可用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>  
posted @ 2009-03-26 16:35  dobestyz  阅读(344)  评论(0)    收藏  举报