日本好好热aⅴ|国产99视频精品免费观看|日本成人aV在线|久热香蕉国产在线

  • <cite id="ikgdy"><table id="ikgdy"></table></cite>
    1. 西西軟件園多重安全檢測(cè)下載網(wǎng)站、值得信賴的軟件下載站!
      軟件
      軟件
      文章
      搜索

      首頁(yè)編程開(kāi)發(fā)其它知識(shí) → 利用Response.Flush和iframe實(shí)現(xiàn)”服務(wù)器推”技術(shù)

      利用Response.Flush和iframe實(shí)現(xiàn)”服務(wù)器推”技術(shù)

      相關(guān)軟件相關(guān)文章發(fā)表評(píng)論 來(lái)源:本站整理時(shí)間:2010/9/8 0:15:39字體大小:A-A+

      作者:佚名點(diǎn)擊:126次評(píng)論:0次標(biāo)簽: Response

      • 類型:圖像處理大。403KB語(yǔ)言:英文 評(píng)分:3.3
      • 標(biāo)簽:
      立即下載

      通過(guò)在HTML頁(yè)面里陷入一個(gè)隱藏的iframe,然后將這個(gè)iframe的src屬性設(shè)為對(duì)一個(gè)長(zhǎng)連接的請(qǐng)求(利用chunked傳輸response),服務(wù)器端就能源源不斷地往客戶推送數(shù)據(jù)。

            基于流方式的”服務(wù)器推”模型:

      image

             服務(wù)端在接到客戶端的請(qǐng)求時(shí),通過(guò)Response的Flush()方法發(fā)送數(shù)據(jù),可以使用定時(shí)器的方式發(fā)送數(shù)據(jù),沒(méi)有數(shù)據(jù)也發(fā)送”無(wú)數(shù)據(jù)”,讓客戶端保持長(zhǎng)連接,直至客戶端斷開(kāi)連接,請(qǐng)求結(jié)束。每次數(shù)據(jù)傳送不會(huì)關(guān)閉連接,連接只會(huì)在通信出現(xiàn)錯(cuò)誤時(shí),或是連接重建時(shí)關(guān)閉(一些防火墻常被設(shè)置為丟棄過(guò)長(zhǎng)的連接, 服務(wù)器端可以設(shè)置一個(gè)超時(shí)時(shí)間, 超時(shí)后通知客戶端重新建立連接,并關(guān)閉原來(lái)的連接)。

            實(shí)現(xiàn)代碼:

            頁(yè)面Default.aspx,用來(lái)展示數(shù)據(jù):

      1: 數(shù)據(jù)列表:o<br />
      2: <div id="con" style=" width:400; height:200px; border:1px solid #FF0">
      3: </div>
      4: <iframe id="flush" src="Flush.aspx" style=" display:none" />
      5:

           ifame的src對(duì)應(yīng)的Flash.aspx后臺(tái)代碼,模擬后臺(tái)發(fā)送數(shù)據(jù):

      1: protected void Page_Load(object sender, EventArgs e)
      2: {
      3: string startHTML = "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">" + Environment.NewLine
      4: + "<html xmlns=\"http://www.w3.org/1999/xhtml\" >" + Environment.NewLine
      5: + "<head>" + Environment.NewLine
      6: + "</head>" + Environment.NewLine
      7: + "<body>" + Environment.NewLine;
      8:  
      9: startHTML += new String(' ', 1024) + Environment.NewLine;
      10:  
      11: Response.Write(startHTML);
      12: Response.Flush();
      13:  
      14: string data = "<script type=\"text/javascript\">parent.$('#con').append(\"{0}\");</script>";
      15: Response.Write(string.Format(data, "開(kāi)始發(fā)送數(shù)據(jù):<br/>"));
      16: Response.Flush();
      17:  
      18: int index = 0;
      19: while (true)
      20: {
      21: System.Threading.Thread.Sleep(2000);
      22: if (index % 2 == 0)
      23: {
      24: Response.Write(string.Format(data, DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + " 服務(wù)端發(fā)送數(shù)據(jù)<br/>"));
      25: }
      26: else
      27: {
      28: Response.Write(string.Format(data, DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + " 無(wú)數(shù)據(jù)發(fā)送<br/>"));
      29: }
      30: Response.Flush();
      31:  
      32: index++;
      33: }
      34: }
      35:  

            運(yùn)行Default.aspx的結(jié)果:

      image

            使用 iframe 請(qǐng)求一個(gè)長(zhǎng)連接有一個(gè)很明顯的不足之處:IE、Morzilla Firefox 下端的進(jìn)度欄都會(huì)顯示加載沒(méi)有完成,而且 IE 上方的圖標(biāo)會(huì)不停的轉(zhuǎn)動(dòng),表示加載正在進(jìn)行;刷新當(dāng)前頁(yè)面反應(yīng)也是會(huì)很慢。

            解決IE的進(jìn)度欄顯示加載沒(méi)有完成,可以使用一個(gè)稱為“htmlfile”的 ActiveX,是Google 的天才們使用的方法,該控件也被用到gmail+gtalk 產(chǎn)品中。

            修改Default.aspx的頁(yè)面代碼:

      1: 數(shù)y據(jù)Y列D表í:o<br />
      2: <div id="con" style=" width:400; height:200px; border:1px solid #FF0">
      3: </div>
      4: <script type="text/javascript">
      5: function getData(d)
      6: {
      7: $("#con").append(d);
      8: }
      9:  
      10: function rpc_iframe() {
      11: var transferDoc = new ActiveXObject("htmlfile");
      12: transferDoc.open();
      13: transferDoc.write("<html>")
      14: transferDoc.write("<div><iframe src=\"Flush.aspx\"></iframe></div>");
      15: transferDoc.close("</html>");
      16: transferDoc.parentWindow.getData = getData;
      17: setInterval(function () { }, 10000); //不加這句會(huì)使連接斷開(kāi)
      18: }
      19:  
      20: rpc_iframe();
      21: </script>
       22:

           修改Flush.aspx.cs代碼:

      1: //string data = "<script type=\"text/javascript\">parent.$('#con').append(\"{0}\");</script>";
      2: string data = "<script type=\"text/javascript\">parent.getData(\"{0}\");</script>";
      3:  

        相關(guān)評(píng)論

        閱讀本文后您有什么感想? 已有人給出評(píng)價(jià)!

        • 8 喜歡喜歡
        • 3 頂
        • 1 難過(guò)難過(guò)
        • 5 囧
        • 3 圍觀圍觀
        • 2 無(wú)聊無(wú)聊

        熱門評(píng)論

        最新評(píng)論

        發(fā)表評(píng)論 查看所有評(píng)論(0)

        昵稱:
        表情: 高興 可 汗 我不要 害羞 好 下下下 送花 屎 親親
        字?jǐn)?shù): 0/500 (您的評(píng)論需要經(jīng)過(guò)審核才能顯示)