2010-09-24 55 views
2

當用戶第一次登錄時通知,沒那麼難,只需要數據庫掃描,我可以處理。但是,當朋友發送對個人資料X的請求或評論時,即使用戶X沒有提出任何請求,也會發送通知,並幾乎立即在另一端接收通知。它是否投票?不喜歡它,因爲頁面不會自動刷新。它一定是別的嗎?任何人有任何想法?也許Web推?Facebook通知系統:是否投票?

+0

[Facebook,Gmail如何發送實時通知?](http://stackoverflow.com/questions/1086380/how-does-facebook-gmail-send-the-real-time-notification) – 2010-09-24 17:12:17

回答

1

我相信他們使用AJAX/JavaScript的。它將允許頁面從服務器獲取信息並顯示它,而無需重新加載頁面。你應該可以用AJAX庫或類似的東西來做到這一點。至於Facebook本身是否推送或投票,我不知道,但您可以通過使用AJAX進行投票來獲得類似的行爲。

+2

Firebug肯定會向服務器顯示連續的獲取請求。 – 2010-09-24 15:44:49

+0

我知道輪詢重新加載您的網頁,我不希望這種行爲。讓我試試組件輪詢,看看我能否避免這種影響。 – 2010-09-24 15:51:56

+0

不,它沒有。這就是投票的原因。 – lmojzis 2012-07-01 23:48:43

9

Facebook使用長輪詢。

當你在他們的頁面上時,他們有一個腳本不斷向特定的URL發出請求。處理該URL的服務器不是立即響應,而是首先等待消息進入其隊列,然後將該消息發送給用戶。如果達到一定的超時時間,服務器響應而不發送消息,並且客戶端腳本向該URL發出另一個請求。

要在操作中看到此操作,請在Facebook頁面上打開Firebug的Net選項卡並等待幾分鐘。您應該看到持續一分鐘的請求,然後再接收新的請求。