2012-06-30 25 views
2

我會盡我所能來嘗試解釋這一點。但基本上在網站上有一些動態內容(如消息,通知等)時,只要消息到達,您就希望將這些信息呈現給用戶。例如,一個用戶發送一個新的消息顯示在您的網站標題中顯示一個泡泡。JavaScript檢查新內容,如通知

這幾天你幾乎在每一個網站上都能看到這些東西,而且我不確定實現這種功能的最佳方式。

我最初的想法是寫一些ajax調用,然後將其包裝在setInterval調用中,因此每30秒鐘請求一次。這裏顯而易見的問題是:a)您必須等待30秒才能發出請求,並且b)您可能會在一天內請求服務器數百次,而無法顯示實際的新內容。

我的第二個想法是使用EventListeners,因爲他們似乎更理想,因爲據我所知他們只是在服務器告訴它時做一個請求。但我不是100%確定如何構建這樣的東西。任何人都可以掀起一個快速的例子或指出一些可以作爲這樣的基礎的東西嗎?

所以要澄清我想做的事:

當新的東西偏偏喜歡在頁面上發送消息或創建一個通知,這將發出一個事件,事件偵聽器拾取和更新的東西要麼呈小彈出信息或更新泡泡例如Messages (2)

我將使用CakePHP和jQuery來實現此目的。所以任何特定的東西都會很棒......希望有人能幫助我。

基本上我問的EventListener VS的setInterval以及它將如何與Ajax調用工作...

+0

可能的重複http://stackoverflow.com/questions/10672604/live-new-message-notification/10672708#10672708 – thomas

+0

不是重複,因爲我問具體到EventListener vs setInterval – Cameron

+0

更好的問題programmers.se不是這樣 – rlemon

回答

2

正如亞歷克斯球建議,你應該研究有關彗星的編程技術,也看答案,這問題Simple comet example using php and jquery。實現一種有效的技術並不是一個「簡單的」答案,而是最有效的方法是使用iframe。使用iframe將允許您與服務器建立持久連接(PHP端)。在這裏,您將能夠檢查新消息(查詢新消息),如果有消息,則返回您的數據。你的ajax調用(成功函數)將處理這些數據,然後再發送回服務器。如果沒有,那麼你將不得不循環。再一次,有效的COMET編程技術不易實現。 雖然這裏有一些有用的例子: http://www.webreference.com/programming/javascript/rg30/index.html, http://www.zeitoun.net/articles/comet_and_php/start,setInerval不會有效的聊天,也許通知。

COMET技術並不特定於CakePHP。