后台数据发送给指定客户端

 


案例:现在有一系统,当两同名用户登陆到系统后,需提示前一用户下线,提示用户下线通知由后台发出,后台与WEB服务器通迅,告知WEB服务器,如果实现发送该数据到指定客户端
我的想法是这样的,因为同名用户,所以无法区分,所以在用户登陆时给予新建一个包含用户名及登陆时间的对象,接收后台数据时,查询用户名相同的时间最小对象,写入一个SESSION标识中,然后每个客户端开启一个定时器,查询SESSION标识,如果标识改变,就退出
新建对象:
private void AddOperatorList( string sUserName,WebSocket wWebSocket,DateTime dNowTime )
  {
           Client cCt= new Client( sUserName,wWebSocket,dNowTime );
           ClientList.OperatorList.Add( cCt );
  }
 
.......
public delegate void LoginLoadHandler();
........
public event LoginLoadHandler LoginLoad;
......
接收线程函数
{
LoginLoad();
}
 
public void Page_Load(object sender, System.EventArgs e)
  {
Session["WebSocketLoginFlag"] = NUMBER_ZERO;
Client cCt= ClientList.SearchOperatorTimeMin(UserName);//查询时间最少的对象
cCt.clientSocket.LoginLoad += new LoginLoadHandler( LoginFlag);
}
private void LoginFlag()委托方法
  {
            Session["WebSocketLoginFlag"] = NUMBER_ONE;设置session标致
  }
 
客户端AJAX获取session标识值
protected void Page_Load(object sender, System.EventArgs e)
  {
  int iLoginFlag = convert.toint32( Session["WebSocketLoginFlag"]);
   this.Response .Write (iLoginFlag);
   this.Response.End();
   return;
  }
function LoadLogin()
  {
   if (xmlHttp.readyState == 4)
   {
    if (xmlHttp.responseText.indexOf('错误') >= 0)
    {
     if( xmlHttp.responseText == "1" )
     {
      alert('被迫下线,用户在别处已登陆了');
      window.location="Logout.aspx?exit=no";
      return;
     }
    }
    else
    {
     if( xmlHttp.responseText == "1" )
     {
      alert('被迫下线,用户在别处已登陆了');
      window.location="Logout.aspx?exit=no";
      return;
     }
    }
   }
  }
 
function loadlogin()
  {
   xmlHttp = GetXmlHttpObject();
   if (xmlHttp == null)
   {
    alert("浏览器不支持 AJAX!");
    return;
   }
   var url = 'RepeatLogin.aspx';
 
   xmlHttp.onreadystatechange = LoadLogin;
   xmlHttp.open("POST", url, true);
   xmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
   xmlHttp.send(null);
  }
function LoadTime()//页面加载时调用
  {
    timer = setInterval( loadlogin,4000);
  }
<frameset onload="LoadTime()" />
 
本文来源于网络小筑 http://www.iwebtrados.com.cn/ , 原文地址:http://www.iwebtrados.com.cn/post/141.html


 


 

你可能感兴趣的:(客户端)