本頁使用了標題或全文手工轉換

推播技術

維基百科,自由的百科全書
跳到: 導覽搜尋

推播技術,又名反向AJAX,指的是一種基於Internet,將由中心或發佈者發出訊息傳輸給用戶的技術。與之相對的是拉取,這種情況下請求是由用戶或用戶端主動發起的。

常見用途[編輯]

推播技術常常用於訊息的訂閱。用戶端「訂閱」伺服器提供的多種資訊「頻道」;一旦有新的資訊可用,伺服器將此訊息推播到用戶端上。

其中的典型例子是即時通訊服務。訊息服務將來自用戶的訊息或檔案儘可能快地推播到接收者一端。無論是非中心式結構(如WASTE)還是中心式結構(如IRCXMPP),他們都允許傳送者而不是接收者主動地推播資訊。

電子郵件同樣可以是一個推播系統:SMTP協定可以成為一種推播技術。然而,從郵件伺服器到接收者桌面的最後一步通常仍然在使用傳統的拉取協定,如POP3IMAP。現代郵件用戶端可以通過不斷重複收信來使這一步看起來實時。IMAP技術還包含了「IDLE」命令,這樣就能夠允許伺服器在有新郵件到達的時候通知用戶端。

點播是另一個例子,這種服務從1990年代開始流行,能夠傳遞新聞和股市數據。網景微軟瀏覽器大戰時期都整合了這種功能,但是在2000年代,其逐漸被RSS等技術取代並淡出。

其他推播系統的用途還包括股票數據發佈、線上聊天、網絡拍賣、線上遊戲、體育結果發佈、終端監視,以及高階網絡監控等。

典型實現[編輯]

HTTP伺服器推播[編輯]

HTTP伺服器推播(又稱HTTP流)是一種由Web伺服器瀏覽器傳輸數據的機制。這種機制可以通過多種方法實現。

一般來講,Web伺服器不在向用戶端傳輸數據後中斷,而是保持這個連線。這樣一旦新的數據到達或事件觸發,伺服器可以儘快地將數據(通過這個/這些連線)傳送到一個或一批用戶端。通常Web伺服器通過CGI提供這種功能(如Apache上不處理請求頭指令碼)。

另一種機制是由網景於1995年引入,基於一種特定的名叫「multipart/x-mixed-replace」的MIME類型[1]當伺服器推播一些新數據時,瀏覽器將解釋為文件變化。時至今日,此協定仍然被FirefoxOperaSafari支援,卻無法被Internet Explorer支援。[2]其可以應用於HTML文件,也可以用於網絡網絡攝影機應用中的圖片流。

網頁超文字技術工作小組的Web應用1.0版推薦標準[3]包含一種向用戶端推播內容的機制。[4][5]2006年9月1日,Opera瀏覽器引入了一種名為「伺服器傳送事件」的實驗性系統,這在今天已經成為HTML5標準的一部分。[6]與之相關的另一部分HTML5標準是WebSocket API,這將允許用戶端和伺服器通過一個全雙工TCP連線通訊。

Pushlet[編輯]

在這種技術中,伺服器利用了持續HTTP連線的優勢,將返回持久地保持為「開啟」狀態(比如,伺服器一直沒有中斷請求),有效地使瀏覽器在載入完初始化內容後認為頁面一直在「載入中」。之後,伺服器定時地傳送Javascript片段來更新頁面內容,實現「推播」。使用這類技術時,用戶端不需要使用Java applet或類似的外掛模組來保持伺服器連線;用戶端將自動地注意到來自伺服器的新事件。[7][8]然而,這種方法有一個嚴重缺陷,伺服器無法控制瀏覽器的超時時間;一旦超時,用戶端必須進行一次重新載入。

長連線[編輯]

在頁面里嵌入一個隱蔵iframe,將這個隱蔵iframe的src屬性設為對一個長連線的請求或是採用xhr請求,伺服器端就能源源不斷地往用戶端輸入數據。優點:訊息即時到達,不發無用請求;管理起來也相對方便。缺點:伺服器維護一個長連線會增加開銷。例項:Gmail聊天

長輪詢[編輯]

長輪詢本身不是一種真正的推播技術,而只是傳統輪詢技術的一個變種。然而,其能夠在真正推播技術無法實現時模擬推播機制。

在長輪詢機制中,用戶端像傳統輪詢一樣從伺服器請求數據。然而,如果伺服器沒有可以立即返回給用戶端的數據,則不會立刻返回一個空結果,而是保持這個請求等待數據到來(或者恰當的超時),之後將數據作為結果返回給用戶端。

例如,BOSH是一個常見的、長久的、在TCP困難或無法實現的情況下(如在使用瀏覽器的情況下[9])使用長輪詢模擬TCP的技術。這也是一種XMPP中隱含的技術,蘋果公司將其用於iCloud推播支援。

Flash XMLSocket[編輯]

這種技術被Cbox等一些聊天應用使用。這種情況下,通過一個Javascript控制的一像素的Flash影片實現XMLSocket,用戶端可以建立一條TCP連線實現與中繼伺服器的單向通訊。中繼伺服器不會從Socket讀取任何數據,而僅僅是立刻向用戶端傳送一個唯一識別元。接下來,用戶端通過一個HTTP請求將此識別元傳送給Web伺服器。這樣,Web應用程式就能夠通過中繼伺服器向客戶推播訊息。中繼伺服器不需要主動開啟TCP連線,這樣他可以處理數萬連線。在這種模式下,主要瓶頸在於伺服器作業系統的TCP協定棧。

參見[編輯]

參考[編輯]