我們的架構是使用Push引擎將數據發送到瀏覽器, 有誰能告訴我Push Engine的用途是什麼? (爲什麼它需要,因爲使用正常的AJAX編程可以使同一件事變得可行)\爲什麼需要Push引擎
請指導我。
我們的架構是使用Push引擎將數據發送到瀏覽器, 有誰能告訴我Push Engine的用途是什麼? (爲什麼它需要,因爲使用正常的AJAX編程可以使同一件事變得可行)\爲什麼需要Push引擎
請指導我。
假設您訪問一個網站,並且網站不斷更新。您的瀏覽器需要不斷更新您正在查看的數據,這意味着瀏覽器需要與服務器保持通信並獲取更新。
您可以使用ajax每隔幾秒發出一次請求,每次從服務器獲取更多數據。問題是 - 你需要進行大量的Ajax調用,並且爲每個調用打開一個連接(一個套接字),並且最終這是一個非常緩慢的過程。如果請求之間的間隔很大,則服務器上的更新與瀏覽器中的更新之間會有一段延遲。
爲了解決這個問題,我們可以操縱HTTP調用 - 保持請求(連接)打開,並不斷髮送數據。這樣,當服務器想要發送一些東西給客戶端(瀏覽器)時,就有了一個開放的連接,並且它不需要瀏覽器的下一個Ajax調用。 HTTP服務器的請求超時,所以在請求超時之前,瀏覽器將關閉它並創建一個新的請求。
另一個(更好的)方法是使用XMPP協議,它用於Facebook和MSN等聊天。
AJAX是一種拉式方法 - 它要求客戶端連接到服務器。如果你有一些你想要直播的信息 - 例如足球比賽中的比分直播 - 那麼即使在服務器上沒有數據等待的情況下,AJAX呼叫也必須定期進行。推送引擎是相反的 - 客戶端和服務器保持連接,服務器在有數據要發送時推送數據。
這是一個PUSH引擎,但不是一個好的引擎。 EventSource&WebSockets是更好的服務器推送類型 – Raynos
同意,但它們是新的和更多的支持是必需的。舊的瀏覽器不支持它或禁用它 – galchen
只有IE9和遺留/不贊成使用的瀏覽器不支持Websockets或事件源。對於IE9有仿真回退(如Flash網絡套接字或COMET技術)。 – Raynos