<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Change Dir

    先知cd——熱愛生活是一切藝術的開始

    統(tǒng)計

    留言簿(18)

    積分與排名

    “牛”們的博客

    各個公司技術

    我的鏈接

    淘寶技術

    閱讀排行榜

    評論排行榜

    服務器端的推

    服務器端推的技術,對于普通的互聯(lián)網(wǎng)站式應用是很少涉及到的,大家已經(jīng)習慣了請求響應式的”拉“,但是對于現(xiàn)在ajax的快速發(fā)展,以及html5的誕生,服務器端的推送技術被越來越多的提到。這里總結幾個push技術。如何push,給誰push,這就引出了推技術的核心——發(fā)布訂閱模型。我們常見的推主要有email系統(tǒng)、RSS、IM、消息系統(tǒng)等。

    假設一個場景,一個網(wǎng)站,想對登陸用戶進行消息提醒,那么如何選擇技術實現(xiàn)呢?現(xiàn)在大多數(shù)的實現(xiàn)是輪詢——也就是間隔拉技術,定時的用ajax請求訪問server,將返回的數(shù)據(jù)更新到頁面上,通過間隔拉取來模擬出push的效果。但這畢竟還不是推,而且存在的核心問題就是請求浪費,資源浪費,本可避免的服務器端壓力,總之一句話:低效率。

    單純的服務器端推:

    1,http服務一般是做長連接的,連接不斷開,那么當有事件發(fā)生時,服務器端可以定向的向持有連接的客戶端push數(shù)據(jù)。

    2,http響應header里的content-type設置為multipart/mixed這樣的MIME,這種技術可以通過boundary來在header的content-type里設置一個邊界值,客戶端通過解析邊界值來區(qū)分不同的顯示部分。換句話說,服務器端告訴客戶端這個響應是有多個部分的,客戶端應該通過boundary來區(qū)分這些部分并分別處理。這種技術有個明顯的劣勢是IE不支持,多數(shù)是被用到webcam這樣的應用中。

    3,websocket,html5才支持的最新技術,優(yōu)點嘛自然是高效,但是缺點就是客戶端瀏覽器的支持度了。

    另外的幾種技術:

    1,pushlet:與剛才1中提到一樣的持久連接,服務端定期的返回js片段給到客戶端,客戶端持續(xù)顯示loading狀態(tài),在收到js后執(zhí)行,將結果更新到頁面上。缺點的話是服務器端對客戶端超時的控制沒有掌握,在超時后,只有客戶端主動刷新才能解決。詳細優(yōu)缺點參看這篇文章

    2,長輪詢:與傳統(tǒng)定時輪詢不同,長輪詢會在服務器端阻塞請求,直到有數(shù)據(jù)的時候再做響應,而服務器端在接到響應后馬上重新請求,如此往復。具體可以參看這篇文章

    3,F(xiàn)lash XML Socket relays:通過加入一個relay服務器,這個服務器接收到客戶端的一個請求,且這個請求基于tcp的連接,然后relay會返回一個id給到客戶端,然后客戶端會帶著這個id請求web服務器,web服務器會把響應消息給到relay,relay再通過flash socket分發(fā)出去。當然tcp并發(fā)連接就是個瓶頸,但是這種做法的效率很高,對于小規(guī)模實現(xiàn)有益。

    眾所周知的服務器端推就是comet技術了,長輪詢其實也是一種comet技術。comet技術本身是個泛化了的概念,具體實現(xiàn)可以有多種,但是通用且多數(shù)的實現(xiàn)時基于XHR(XMLHttpRequest)的ajax長輪詢。

    對于具體的業(yè)務場景,我們可能選擇不同的服務器端推策略,對于現(xiàn)有的web應用比如聊天和消息可能TCP或者長連接就能解決問題,但是對于大并發(fā)下的大型網(wǎng)站,拉取是更合適的選擇,長輪詢可能用的會多一些。當然我們最期望的是websocket的表現(xiàn)~

    參考文章:

    http://en.wikipedia.org/wiki/Push_technology

    http://en.wikipedia.org/wiki/Extensible_Messaging_and_Presence_Protocol

    http://en.wikipedia.org/wiki/Internet_Relay_Chat

    http://en.wikipedia.org/wiki/Comet_(programming)

    http://en.wikipedia.org/wiki/MIME#Mixed-Replace_.28experimental.29

    posted on 2012-08-12 10:51 changedi 閱讀(2197) 評論(0)  編輯  收藏 所屬分類: Java技術

    主站蜘蛛池模板: 美女扒开屁股让男人桶爽免费| 亚洲人成网站在线观看播放动漫| 亚洲av无码一区二区三区四区| 国产大片91精品免费观看不卡| 亚洲精品视频观看| 最近免费中文字幕大全免费| 亚洲午夜视频在线观看| 久久免费观看国产精品88av| 日本红怡院亚洲红怡院最新| 美女视频黄的免费视频网页 | 久久国产亚洲精品麻豆| 一级做a爱过程免费视| 亚洲美女高清一区二区三区| 四虎影视在线看免费观看| 浮力影院亚洲国产第一页| baoyu777永久免费视频| 久久精品国产亚洲AV无码娇色| 最近免费视频中文字幕大全| 国产精品亚洲片夜色在线| 午夜两性色视频免费网站| 羞羞视频在线免费观看| 亚洲日韩aⅴ在线视频| 99久久人妻精品免费一区| 成人亚洲国产va天堂| 国产精品色午夜视频免费看| 无码毛片一区二区三区视频免费播放 | 亚洲AV无码一区二区三区在线| 成年女人午夜毛片免费看| 色屁屁在线观看视频免费| 亚洲一区二区三区香蕉| h视频在线观看免费网站| 亚洲欧美乱色情图片| ZZIJZZIJ亚洲日本少妇JIZJIZ| 男人进去女人爽免费视频国产| 亚洲人成网站18禁止久久影院 | 亚洲综合激情五月丁香六月| 免费一级毛片不卡不收费| 免费人成毛片动漫在线播放| 亚洲色偷偷综合亚洲AV伊人蜜桃| 亚洲精品国产精品国自产观看| 免费国产黄网站在线观看可以下载|