the journey is the reward...

          導航

          <2025年7月>
          293012345
          6789101112
          13141516171819
          20212223242526
          272829303112
          3456789

          留言簿

          隨筆分類

          文章分類

          隨筆檔案

          文章檔案

          閱讀排行榜

          評論排行榜

          常用鏈接

          統計

          最新評論

          瀏覽器[IE,Firefox]不支持comet技術-AJAX不能支持服務端推消息

          comet技術:服務端向客戶端主動推消息的技術,但側重基于http的協議,如果是socket則不存在這個問題.

          從tomcat6開始,增加了org.apache.catalina.CometProcessor接口來實現對comet技術的支持.
          修改conf/server.xml 

          <Connector port="8080" protocol="HTTP/1.1"-改為->"org.apache.coyote.http11.Http11NioProtocol"
          java:請參看tomcat.apache.org上的CometServlet的例子.
          import javax.servlet.http.HttpServlet;
          import org.apache.catalina.CometEvent;
          import org.apache.catalina.CometProcessor;

          CometServlet extends HttpServlet implements CometProcessor

          javascript:

          function installComet(){  
           var xmlReq = window.ActiveXObject ? new ActiveXObject("Microsoft.XMLHTTP") : new XMLHttpRequest();
           xmlReq.onreadystatechange = handler;
           xmlReq.open("GET", "/yourapp/comet",true);
           xmlReq.send();
          }
          function handler(){
           try{
            if(xmlReq.readyState){  
             if(xmlReq.readyState>=3){   
              alert(xmlReq.responseText);
             }
            }
           }catch(e){  
            alert(xmlReq.readyState+":e->:"+e.message);
           } 
          }

              在IE瀏覽器各個版本中handler只會被回調一次而不管服務端針對此次連接發多少次消息,此時的readyState為3
          對responseText的操作會引發javascript error:完成該操作所需的數據還不可使用。

              在Firefox中handler會被多次調用,但responseText會緩存前一次的消息而不會清除,responseText的數據會隨著服務端消息的到達而累積.

              到目前為止,瀏覽器只能通過插件的方式來實現對comet技術在客戶端的支持,所以流行的flash player,ActionScript就成為了首選.
          ActionScript通過socket來建立長連接.

              所以那些AJAX框架都不能真正的支持comet,而只能通過poll,setTimeout/setInterval,
          而dwr的ReverseAjax正是使用了setTimeout來poll輪詢服務端的,請參看dwr的engine.js的源碼.

          posted on 2010-02-01 20:43 adapterofcoms 閱讀(1074) 評論(0)  編輯  收藏 所屬分類: java techs

          主站蜘蛛池模板: 东乡族自治县| 和林格尔县| 怀安县| 曲周县| 湾仔区| 兴安盟| 仲巴县| 阳新县| 保亭| 个旧市| 五家渠市| 华蓥市| 布拖县| 太原市| 沁源县| 芮城县| 长泰县| 武宁县| 乐清市| 连平县| 沧州市| 枣阳市| 仁怀市| 沙雅县| 丽江市| 孝昌县| 建阳市| 建瓯市| 黄大仙区| 岑巩县| 搜索| 万宁市| 女性| 黄石市| 大关县| 承德县| 青田县| 井研县| 昌宁县| 体育| 张家港市|