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

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

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

    Change Dir

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

    統(tǒng)計

    留言簿(18)

    積分與排名

    “牛”們的博客

    各個公司技術(shù)

    我的鏈接

    淘寶技術(shù)

    閱讀排行榜

    評論排行榜

    服務(wù)器端的推

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

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

    單純的服務(wù)器端推:

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

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

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

    另外的幾種技術(shù):

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

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

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

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

    對于具體的業(yè)務(wù)場景,我們可能選擇不同的服務(wù)器端推策略,對于現(xiàn)有的web應(yīng)用比如聊天和消息可能TCP或者長連接就能解決問題,但是對于大并發(fā)下的大型網(wǎng)站,拉取是更合適的選擇,長輪詢可能用的會多一些。當(dā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 閱讀(2206) 評論(0)  編輯  收藏 所屬分類: Java技術(shù)

    主站蜘蛛池模板: 一级成人生活片免费看| 一级一级一片免费高清| 精品亚洲成a人片在线观看| 亚洲熟妇无码AV在线播放| 亚洲日韩v无码中文字幕| 亚洲精品国产手机| 鲁啊鲁在线视频免费播放| 黄色视屏在线免费播放| 午夜性色一区二区三区免费不卡视频 | 无码日韩精品一区二区三区免费 | 久久亚洲精品无码观看不卡| 国产亚洲精品AA片在线观看不加载 | 亚洲精品无码永久在线观看| 亚洲AV色香蕉一区二区| 亚洲国产成人久久综合| 国产拍拍拍无码视频免费| 永久黄网站色视频免费观看| 亚洲精品在线播放视频| 久久免费香蕉视频| 色视频色露露永久免费观看| 亚洲综合精品一二三区在线| 两个人日本免费完整版在线观看1| 成年女人午夜毛片免费视频| 亚洲国产精品久久久久婷婷老年| 极品美女一级毛片免费| 女人张开腿等男人桶免费视频| 亚洲精品欧洲精品| 99久久久国产精品免费牛牛四川| 中文字幕无码精品亚洲资源网| mm1313亚洲国产精品无码试看 | 精品免费国产一区二区| 亚洲人成网站18禁止久久影院| 美女在线视频观看影院免费天天看| 亚洲视频一区二区| 美女扒开尿口给男人爽免费视频| 亚洲日韩中文字幕| 日韩免费精品视频| 亚洲成av人片天堂网无码】| 国产极品粉嫩泬免费观看| 亚洲一区二区免费视频| av无码久久久久不卡免费网站|