2012-03-11 65 views
3

我想創建一個類似Facebook的通知系統(當有人對你的帖子發表評論時,出現在屏幕左下角的人,例如)。推送系統沒有node.JS

這裏的事情是服務器需要在這個時刻有人在網站上發表評論時向您發送通知。我認爲這叫做PUSH-System(抱歉我的英文不好)。

我試過用node.JS,但是我的專用服務器無法安裝它。只有當我購買非常昂貴的VPS計劃。

那麼,有沒有辦法使用jQuery或類似的東西來使這個推送通知系統?

謝謝!

,rodrigo.-

+0

看到這些相關的問題:http://stackoverflow.com/questions/7594425/ajax-push-system和http://stackoverflow.com/questions/9138309/php-ajax-jquery-server-push-system – 2012-03-11 18:45:01

+0

謝謝!我會看看這個 – rec 2012-03-11 18:53:14

回答

2

如果你想要一個低延遲,高效的解決方案,你應該使用WebSockets。但是,如果瀏覽器不支持WebSocket,則需要有適當的回退,如長輪詢/短輪詢。

WebSocket協議提供服務器和客戶端之間的全雙工(雙向)連接。傳統的HTTP是半雙工的(單向)。此鏈接將爲您提供使用WebSockets vs HTTP的好處的概述:http://www.websocket.org/quantum.html

您需要知道,大多數現代瀏覽器都支持WebSockets,但使用不同的協議。見這裏:What browsers support HTML5 WebSocket API?

1

除了我張貼在評論上面的引用,實現長輪詢技術是一個通用的解決方案,以消除大量的正常輪詢。以下是Wikipedia說一下:

長輪詢是傳統的輪詢技術的變化,並允許一個信息推送仿真從服務器到客戶端。通過長輪詢,客戶端以類似於普通輪詢的方式向服務器請求信息。但是,如果服務器沒有任何可用於客戶端的信息,而不是發送空響應,服務器將保存該請求並等待某些信息可用。一旦信息變得可用(或者在適當的超時之後),完整的響應被髮送到客戶端。客戶端通常會立即重新請求來自服務器的信息,以便服務器幾乎總是會有一個可用的等待請求,用於響應事件提供數據。在web/AJAX環境中,長輪詢也被稱爲Comet編程。

+0

謝謝我沒有了解Comet的工作方式,但我很快就會研究它。 在setTimeOut函數中使用jQuery AJAX API發出請求很糟糕,對嗎? – rec 2012-03-11 19:14:30

+0

使用Javascript的'setTimeout()'不錯,因爲它只運行一次並超時。另一方面,使用'setInterval()'將允許您以設定的時間增量重複進行AJAX調用。這種「輪詢」可能會使您的服務器和應用程序停滯不前。這就是「長輪詢」的地方。你使用Javascript/jQuery發出一個請求,並且服務器持有該連接,直到它具有數據,對於應用程序的用戶來說,就好像服務器將數據「推送」到應用程序實際上所做的只是延遲返回數據。 – 2012-03-11 20:25:30

+0

**太棒了!**非常感謝你! – rec 2012-03-11 20:27:53