<address id="zhpbl"></address>
<noframes id="zhpbl">
<address id="zhpbl"><form id="zhpbl"><th id="zhpbl"></th></form></address>

    <em id="zhpbl"></em>

      <address id="zhpbl"><th id="zhpbl"><progress id="zhpbl"></progress></th></address>
      更多精彩內容,歡迎關注:

      視頻號
      視頻號

      抖音
      抖音

      快手
      快手

      微博
      微博

      java comet

      文檔

      java comet

      comet是基于HTTP長連接的“服務器推”技術,是一種新的Web應用架構?;贘ava的成熟的服務器推送框架有DWR,另外comet的應用主要體現在股票系統和實時通訊。
      推薦度:
      導讀comet是基于HTTP長連接的“服務器推”技術,是一種新的Web應用架構?;贘ava的成熟的服務器推送框架有DWR,另外comet的應用主要體現在股票系統和實時通訊。

      java comet是什么,讓我們一起了解一下?

      comet是基于HTTP長連接的“服務器推”技術,是一種新的Web應用架構?;贘ava的成熟的服務器推送框架有 DWR ,另外comet的應用主要體現在股票系統和實時通訊。

      Comet有以下兩種實現方式:

      1、長輪詢(long-polling):用JS發送Ajax請求,但是服務器不會立馬響應,直到服務器有消息給客戶端時再響應,響應完成后連接關閉,客戶端立即再次發送請求,等待響應。

      2、流(streaming):和上面long-polling不同的是,服務器發完消息后,不會關閉連接,而是保持HTTP連接繼續等待下一條消息。這樣客戶端不用每次收到消息連接關閉后再次請求。

      這種方式的原理是HTTP協議響應頭的一個Header:Transfer-Encoding: chunked。普通的HTTP響應頭中會有Content-Length表示整個響應的字節大小,瀏覽器接收到所有的響應數據才會加載內容。而設置Transfer-Encoding: chunked后表示響應大小不固定,瀏覽器接收到一點響應數據就加載一點?;诹鞯腃omet后臺實現是一樣的,但是前端會有幾種不同的方式:iframe流和針對FireFox的方式。

      那么實際操作中,Comet是如何實現的?(以長輪詢為例)

      前端頁面:

      
      
      
      
      
      function?getMsg()?{
      //?請求地址是CometServlet對應的URL,加上一個隨機值參數防止緩存問題
      var?url?=?"comet"?+?"?t="+Math.random();
      var?request?=?new?XMLHttpRequest();
      request.onreadystatechange?=?function()?{
      if?(request.readyState?==?4)?{
      if?(request.status?==?200)?{
      if?(request.responseText)?{
      //?追加到HTML中
      document.body.innerHTML?+=?request.responseText;
      }
      }
      //?Ajax完成后,再次Ajax請求
      getMsg();
      }
      };
      request.open("GET",?url,?true);
      request.send();
      }
      window.onload?=?getMsg;
      
      
      
      
      

      后臺Servlet:

      public?class?CometServlet?extends?HttpServlet?{
      @Override
      public?void?doGet(HttpServletRequest?request,?HttpServletResponse?response)?throws?IOException?{
      //?這里用Thread.sleep來模擬comet,相當于每隔5秒服務器向客戶端推送一條消息
      try?{
      Thread.sleep(5000);
      }?catch?(InterruptedException?e)?{
      e.printStackTrace();
      }
      PrintWriter?out?=?response.getWriter();
      out.println("helloworld
      "); }

      在瀏覽器中打開html頁面,可以看到每隔5秒服務器向客戶端推送一個helloworld字符串。而接收到字符串HTTP連接就斷開了,然后Ajax再立即發出請求等待服務器的下次響應。?

      以上就是小編今天的分享了,希望可以幫助到大家。

      文檔

      java comet

      comet是基于HTTP長連接的“服務器推”技術,是一種新的Web應用架構?;贘ava的成熟的服務器推送框架有DWR,另外comet的應用主要體現在股票系統和實時通訊。
      推薦度:
      為你推薦
      資訊專欄
      熱門視頻
      相關推薦
      山楂干泡水最佳搭配 java commandline java comparable接口 java compiler java config java console java console.log 復活節的由來 java const java consumer接口 統一和康師傅是哪國的 怎么刪掉word中的空白頁 微信筆記在哪里編輯 椰子怎么挑 蟑螂最怕三種克星 毛尖屬于什么茶 微信鈴聲怎么設置自己的歌 怎么確認微信還在不在電腦端 河南過年的風俗有哪些 麗水市是哪個省 java combobox java color java collections java collect java clone() java clob java classloader java class.forname java class java cipher java charset java charsequence java charat java channel iPad怎么重啟 java cglib 平板如何錄屏 java ceiling java callback java calendar獲取當前時間
      Top 少妇高潮太爽了在线视频