2011-09-08 64 views
0

我們的架構是使用Push引擎將數據發送到瀏覽器, 有誰能告訴我Push Engine的用途是什麼? (爲什麼它需要,因爲使用正常的AJAX編程可以使同一件事變得可行)\爲什麼需要Push引擎

請指導我。

回答

0

假設您訪問一個網站,並且網站不斷更新。您的瀏覽器需要不斷更新您正在查看的數據,這意味着瀏覽器需要與服務器保持通信並獲取更新。

您可以使用ajax每隔幾秒發出一次請求,每次從服務器獲取更多數據。問題是 - 你需要進行大量的Ajax調用,並且爲每個調用打開一個連接(一個套接字),並且最終這是一個非常緩慢的過程。如果請求之間的間隔很大,則服務器上的更新與瀏覽器中的更新之間會有一段延遲。

爲了解決這個問題,我們可以操縱HTTP調用 - 保持請求(連接)打開,並不斷髮送數據。這樣,當服務器想要發送一些東西給客戶端(瀏覽器)時,就有了一個開放的連接,並且它不需要瀏覽器的下一個Ajax調用。 HTTP服務器的請求超時,所以在請求超時之前,瀏覽器將關閉它並創建一個新的請求。

另一個(更好的)方法是使用XMPP協議,它用於Facebook和MSN等聊天。

+0

這是一個PUSH引擎,但不是一個好的引擎。 EventSource&WebSockets是更好的服務器推送類型 – Raynos

+0

同意,但它們是新的和更多的支持是必需的。舊的瀏覽器不支持它或禁用它 – galchen

+0

只有IE9和遺留/不贊成使用的瀏覽器不支持Websockets或事件源。對於IE9有仿真回退(如Flash網絡套接字或COMET技術)。 – Raynos

0

AJAX是一種拉式方法 - 它要求客戶端連接到服務器。如果你有一些你想要直播的信息 - 例如足球比賽中的比分直播 - 那麼即使在服務器上沒有數據等待的情況下,AJAX呼叫也必須定期進行。推送引擎是相反的 - 客戶端和服務器保持連接,服務器在有數據要發送時推送數據。

+0

但推的想法(因爲客戶端總是啓動與服務器的連接)是套接字保持打開數據傳輸,並且服務器控制何時發送數據。它被稱爲長輪詢,這是一個推動的變化(http://en.wikipedia.org/wiki/Push_technology - 查看長輪詢) – galchen

+0

這就是我說的 - >「一個推動引擎是相反的 - 客戶端和服務器維護當有數據要發送時,連接和服務器推送數據。「 – ManseUK