Ejemplo n.º 1
0
    public void AddMessage(string orderNumber, string BelongFactory, string userName, string content, myAsynResult asyncResult)
    {
        try
        {
            string key = orderNumber + ":" + userName;
            //当传入的内容为"-1"时,表示为建立连接请求,即为了维持一个从客户端到服务器的连接而建立的连接
            //此时将该连接保存到 List<myAsynResult> clients中,待再有消息发送过来时,该连接将会被遍历,并且会将该连接输出内容后,结束该连接
            if (content == "-1")
            {
                if (dicUser.ContainsKey(key))
                {
                    dicUser[key] = asyncResult;
                }
                else
                {
                    dicUser.Add(key, asyncResult);
                }
            }
            else
            {
                //将当前请求的内容输出到客户端
                asyncResult.Content = "";
                asyncResult.Send(null);
                string CurrentDateTime = DateTime.Now.ToString();
                string lastModifyDate  = ConvertDateTimeInt(DateTime.Parse(CurrentDateTime));
                content = content.Replace("\n", "");
                content = content.Replace("\r\n", "");
                CacheHelper.InsertIdentify(orderNumber, CurrentDateTime.ToString() + "|" + userName + "|" + content, BelongFactory);
                //否则将遍历所有已缓存的client,并将当前内容输出到客户端
                foreach (string keys in dicUser.Keys)
                {
                    if (keys.IndexOf(orderNumber) > -1)
                    {
                        try
                        {
                            dicUser[keys].Content = lastModifyDate + "|" + userName + ":" + content;
                            dicUser[keys].Send(null);
                        }
                        catch {
                        }
                    }
                }

                //清空所有缓存
                clients.Clear();
            }
        }
        catch (Exception ex)
        {
        }
    }
Ejemplo n.º 2
0
    public IAsyncResult BeginProcessRequest(HttpContext context, AsyncCallback cb, object extraData)
    {
        //myAsynResult为实现了IAsyncResult接口的类,当不调用cb的回调函数时,该请求不会返回到给客户端,会一直处于连接状态
        string localUserName = WebUtils.GetCookieUser();  //当前登录用户

           string getUser=context.Request["username"];  //发送的人
           string[] userName = getUser !=null ? getUser.Split(',') : null;

        myAsynResult asyncResult = new myAsynResult(context, cb, extraData,localUserName );
        String content = context.Request.Params["content"];

        //向Message类中添加该消息
        Messages.Instance().AddMessage(content, asyncResult,userName);
        return asyncResult;
    }
Ejemplo n.º 3
0
Archivo: Messages.cs Proyecto: pcstx/OA
    public void AddMessage(string content,myAsynResult asyncResult,string[] userName)
    {
        //当传入的内容为"-1"时,表示为建立连接请求,即为了维持一个从客户端到服务器的连接而建立的连接
        //此时将该连接保存到 List<myAsynResult> clients中,待再有消息发送过来时,该连接将会被遍历,并且会将该连接输出内容后,结束该连接
        if (content=="-1")
        {
            clients.Add(asyncResult);
        }
        else
        {
            //将当前请求的内容输出到客户端
            //asyncResult.Content = content;
            //asyncResult.Send(null);

            //否则将遍历所有已缓存的client,并将当前内容输出到客户端
            foreach (myAsynResult result in clients)
            {
                int h=0;
                foreach (string u in userName)
                {
                    if (result.userName == u)
                    {
                        h=1;
                        break;
                    }
                }

                    if (h== 1)
                    {
                        h=0;
                        result.Content = content;
                        result.Send(null);
                    }
                    else
                    {
                        result.Content = "false#@!";
                        result.Send(null);
                    }

            }

            //清空所有缓存
            clients.Clear();
        }
    }
Ejemplo n.º 4
0
    public IAsyncResult BeginProcessRequest(HttpContext context, AsyncCallback cb, object extraData)
    {
        try
        {
            // http://localhost:58826/App_Code/AsnyHandler.cs
            //myAsynResult为实现了IAsyncResult接口的类,当不调用cb的回调函数时,该请求不会返回到给客户端,会一直处于连接状态
            myAsynResult asyncResult = new myAsynResult(context, cb, extraData);

            String userName      = context.Request.Params["userName"];
            String orderNumber   = context.Request.Params["orderNumber"];
            String content       = context.Request.Params["content"];
            String BelongFactory = context.Request.Params["BelongFactory"];
            //context.Session["BelongFactory"] = BelongFactory;
            //向Message类中添加该消息
            Messages.Instance().AddMessage(orderNumber, BelongFactory, userName, content, asyncResult);
            return(asyncResult);
        }
        catch (Exception ex)
        {
            return(null);
        }
    }