jquery-commet

1.基于反复链接实现commet
<script type="text/javascript">
$(function(){
    function pollData(){
        $.get("../first.do",function(data){
            $("#content").append(data+"<br>");
        },"html");
    }
    setInterval(pollData,5000);
});
</script>
</head>
<body>
<div id="content"></div>
<!-- comet实现
1.修改tomcat/server.xml中connector协议HTTP1.1为
    org.apache.coyote.http11.Http11NioProtocol
2.创建Servlet,实现CometProcesser接口
3.获取响应的request和response
 -->
</body>
//////////////////////////////////////////////////////
<script type="text/javascript">
$(function(){
    pollData();
    function pollData(){
        var xhr=createXMLHttpRequest();
        /*由于jquery没有办法支持不同的状态码的判断,所以需要通过原始的ajax来处理*/
        xhr.open("POST","../second.do",true);
        var pos=0;
        xhr.onreadystatechange=function(){
        /*让状态码等于3就可以保证两端一直进行连接,这是实现长连接stream的方式*/
            if(xhr.readyState==3&&xhr.status==200){
                $("#content").append(xhr.responseText.substring(pos)+",");
                pos=xhr.responseText.length;
            }
        }
    /*基于长连接的方式,由于状态码是在3的时候出来数据,对于很多浏览器而言并不支持(仅firefox支持)
    在状态码为3的时候传递数据,所以限制很大,所以需要使用新的方式:长轮询,目前最流行的方式*/
        xhr.send();
    }
    
    function createXMLHttpRequest(){
        if(window.XMLHttpRequest){
            //针对其他主流浏览器
            return new XMLHttpRequest();
        }else if(window.ActiveXObject){
            //针对IE5和IE6
            return new ActiveXObject("Microsoft.XMLHTTP");
        }else{
            alert("你使用的浏览器不支持XMLHttpRequest,请换一个浏览器试试!");
        }
    }
});
</script>
</head>
<body>
<div id="content"></div>
<!-- comet 长连接实现
1.修改tomcat/server.xml中connector协议HTTP1.1为
    org.apache.coyote.http11.Http11NioProtocol
2.创建Servlet,实现CometProcesser接口
3.获取响应的request和response

 -->
</body>
/////////////////////////////////////////////
<script type="text/javascript">
$(function(){
    poll();
    function poll(){
        var xhr=createXMLHttpRequest();
        /*长轮询的方式是每一次提交都是一个完整的请求,所以应该在状态码为4的时候处理*/
        xhr.open("POST","../second.do",true);
        xhr.onreadystatechange=function(){
            if(xhr.readyState==4&&xhr.status==200){
                $("#content").append(xhr.responseText+"");
            /*再次建立连接*/
            poll();
            }
        }
        xhr.send();
    }
    
    function createXMLHttpRequest(){
        if(window.XMLHttpRequest){
            //针对其他主流浏览器
            return new XMLHttpRequest();
        }else if(window.ActiveXObject){
            //针对IE5和IE6
            return new ActiveXObject("Microsoft.XMLHTTP");
        }else{
            alert("你使用的浏览器不支持XMLHttpRequest,请换一个浏览器试试!");
        }
    }
});
</script>
</head>
<body>
<div id="content"></div>
<!-- comet 长连接实现
1.修改tomcat/server.xml中connector协议HTTP1.1为
    org.apache.coyote.http11.Http11NioProtocol
2.创建Servlet,实现CometProcesser接口
3.获取响应的request和response

 -->
</body>
////////////////////////////////////////////////
<script type="text/javascript">
$(function(){
    poll();
    function poll(){
        $.post("../comet.do",function(data){
            $("#content").append(data+",");
            poll();
        },"html");
    }
    
});
</script>
</head>
<body>
<div id="content"></div>
<!-- comet 长连接实现
1.修改tomcat/server.xml中connector协议HTTP1.1为
    org.apache.coyote.http11.Http11NioProtocol
2.创建Servlet,实现CometProcesser接口
3.获取响应的request和response

 -->
</body>


你可能感兴趣的:(jquery-commet)