2012-03-06 88 views
4

我對Facebook如何只在其他人發佈內容時才加載內容感興趣。我能想到的唯一的東西就是使用類似下面的方法來不斷更新頁面而不重新加載頁面。當有人發佈內容時,Facebook如何更新內容

setInterval(ajax_stuff, 1000); 

我正在看控制檯,確實發生了請求,並且另一個新內容被添加到頁面中。

enter image description here

我要上這是怎麼做到有所悟。如果我可以在一個項目中使用它,那真的太棒了。我的意思是每秒做setInterval真的會消耗很多資源。僅在需要時提出請求才是做事的最佳方式。具體來說,我想用它在這個項目上:

https://github.com/anchetaWern/ChatRo

它基本上只是一個聊天框,目前它仍然使用setInterval()。當聊天會話中的其他人實際輸入內容時,我只想更新內容。

+0

您有興趣* – 2012-03-06 15:20:51

+0

'我的意思是每秒做setInterval確實會消耗很多資源'哦,是啊? – 2012-03-06 15:24:08

+0

是的我猜,如果你提供給它的函數調用一個php文件來請求數據庫中的數據。 – 2012-03-06 15:33:33

回答

2

我不能直接告訴FaceBook如何做到這一點,但總的來說,你應該看看WebSockets。

WebSockets允許您的頁面上的JavaScript與服務器保持開放連接,從而您可以近乎實時地向所有連接到服務器的客戶端推送數據。

看看http://pusher.com

此外,谷歌網絡套接字。

1

如果您正在尋找自己的(非Windows)服務器上的某些內容給最終用戶,那麼還請檢查APE project。它是使用SSJS使用彗星的OpenSource。

請注意,它仍然使用Apache和普通的LAMP設置,因此無需獲得專用機器或VPS來託管它。

我也不知道Facebook是如何做到的,但APE確實聽起來不錯。

我只發現一分鐘左右的谷歌搜索,因爲你的問題讓我感興趣,我沒有使用或測試過它,但作爲一個免費的工具,在你自己的服務器上,它絕對值得一看。

另外值得一提的是,我確實發現了一個葡萄牙語評論,它抱怨說它不適用於Windows服務器,這是在文檔中指定的。

祝你好運,我會對它如何去感興趣,如果你決定給它一槍!