2011-12-28 76 views
1

Facebook和其他網頁如何似乎自動推送到網頁?他們並不持續令人耳目一新。推送到網頁

我知道這是通過javascript,但我對此理論有點不確定。是否有一個JavaScript腳本持續檢查Facebook服務器以查看是否創建了更新?

有人能指出我正確的方向,我可以研究如何將此功能添加到我的網頁? (它可能更多的一個JavaScript的事情,但我使用C#ASP.NET)

+1

推什麼地方?你能舉個例子嗎? – 2011-12-28 11:05:44

+0

你提出問題的方式似乎很奇怪。請你舉個例子 – vini 2011-12-28 11:12:39

回答

1

解釋如果你正在談論的方式Facebook更新您的新聞當朋友發佈新故事時,自動在瀏覽器中自動饋送,然後回答是http streaming

我不能告訴你他們使用的是精確的實現,但它的基本功能是,他們使用xhr(通常被稱爲AJAX)做long polling對他們的服務器,然後使用JS操作DOM每當新的數據進來。

來實現這種功能的一種流行方式是使用comet streaming

0

他們不斷檢查是會話對象,並不斷更新中創建的服務器上非常小的布爾變量(不知道的間隔也許1〜5秒)

一旦他們發現這個變量變了,他們看對於更大的變量(如你的朋友的帖子)比這個,如果他們發現變化,他們尋找更大的變量(如你所有其他訂閱)

所有這些發生異步在進程上運行服務器上,而不通知你,除非他們完成。

數據來自網絡服務,並通過操縱網頁的DOM對象使用JavaScript異步綁定到您的頁面。

0

呃只是想廣告一些細節。 HTTP是無狀態的。所以沒有推動的概念。你需要明白這一點。很重要。 HTTP是無狀態的

那麼它是如何做到的?

打開一個螢火蟲,觀看交通,爲Facebook和Gmail等,你會看到有不斷XMLHTTPRequests被髮送到服務器。如果有新消息,它就會被獲取,您的前端會更新您的UI。所以他們正在使用AJAX。

這就是發生了什麼。

現在是socket.io,它可以推送給客戶端,但這是另一個故事。

-1

我用dwr實現將一些信息推送到網絡上。它可能是這樣工作的,首先Web JS發佈到Web上,然後Web將這個通話保留,直到Web需要將某些內容推送到Web或超時。然後網絡調用您之前註冊的回調函數。