comet

引用自:http://blog.csdn.net/wanglipo/article/details/7256886
1.客戶端請求javascript

 

<script type="text/javascript"> 

var HttpRequest; 

function CreateXmlHttpRequest()
{
   if(window.XMLHttpRequest)
   {
      HttpRequest=new XMLHttpRequest();
   }
   else if(window.ActiveXObject)
   {
      HttpRequest=new ActiveXObject("MICROST.XMLHTTP");
   }


function Send()
{
    document.getElementById("test").innerHTML="等待返回信息 ";
    CreateXmlHttpRequest();
    if(HttpRequest!=null)
    {
       HttpRequest.onreadystatechange=ShowMessage;
       HttpRequest.open("GET","Handler.ashx?name="+escape("leon")+"&m"+Math.random());
       HttpRequest.send();
    }


function ShowMessage()
{
    if(HttpRequest.readyState==4&&HttpRequest.status==200)
    {
        if(HttpRequest.responseText.length>0)
        {
           alert(HttpRequest.responseText);//收到信息
           //若是有信息返回 從新發送請求 遞歸
           Send();
        }
    }


</script> 

2.服務的如何hold請求java

 

Code<!--Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->public class Handler : IHttpHandler{    private bool ok = true;     public void ProcessRequest(HttpContext context)    {        ok = true;        while (ok)//超時設置ok爲false便可        {            //循環檢查是否有信息存在            Check();             //防止循環太頻繁             System.Threading.Thread.Sleep(1000);        }    }     private void Check()    {        List<message> list = new List<message>();//信息列表         string str = "";        lock (im.mlist)        {            if (im.mlist.Count > 0)            {                foreach (message m in im.mlist)                {                    if (m.username == HttpContext.Current.Request["name"].ToString())                    {                        list.Add(m);                        str = m.messagecontent;                        break;                    }                }                 if (list.Count > 0)                {                    foreach (message m in list)                    {                        im.mlist.Remove(m);                    }                }                 //收到信息 循環結束                ok = false;                 if (list.Count > 0)                {                    //推信息                    HttpContext.Current.Response.Write("收到信息:" + str);                }            }        }    }     public bool IsReusable    {        get        {            return false;        }    } }
相關文章
相關標籤/搜索