Facebook和其他網頁如何似乎自動推送到網頁?他們並不持續令人耳目一新。推送到網頁
我知道這是通過javascript,但我對此理論有點不確定。是否有一個JavaScript腳本持續檢查Facebook服務器以查看是否創建了更新?
有人能指出我正確的方向,我可以研究如何將此功能添加到我的網頁? (它可能更多的一個JavaScript的事情,但我使用C#ASP.NET)
Facebook和其他網頁如何似乎自動推送到網頁?他們並不持續令人耳目一新。推送到網頁
我知道這是通過javascript,但我對此理論有點不確定。是否有一個JavaScript腳本持續檢查Facebook服務器以查看是否創建了更新?
有人能指出我正確的方向,我可以研究如何將此功能添加到我的網頁? (它可能更多的一個JavaScript的事情,但我使用C#ASP.NET)
我相信他們使用了「保持活動」會議上與一些技術相結合,在維基百科http://en.wikipedia.org/wiki/Push_technology
解釋如果你正在談論的方式Facebook更新您的新聞當朋友發佈新故事時,自動在瀏覽器中自動饋送,然後回答是http streaming。
我不能告訴你他們使用的是精確的實現,但它的基本功能是,他們使用xhr(通常被稱爲AJAX)做long polling對他們的服務器,然後使用JS操作DOM每當新的數據進來。
來實現這種功能的一種流行方式是使用comet streaming
你也應該看看Server-Sent Events。
他們不斷檢查是會話對象,並不斷更新中創建的服務器上非常小的布爾變量(不知道的間隔也許1〜5秒)
一旦他們發現這個變量變了,他們看對於更大的變量(如你的朋友的帖子)比這個,如果他們發現變化,他們尋找更大的變量(如你所有其他訂閱)
所有這些發生異步在進程上運行服務器上,而不通知你,除非他們完成。
數據來自網絡服務,並通過操縱網頁的DOM對象使用JavaScript異步綁定到您的頁面。
呃只是想廣告一些細節。 HTTP是無狀態的。所以沒有推動的概念。你需要明白這一點。很重要。 HTTP是無狀態的。
那麼它是如何做到的?
打開一個螢火蟲,觀看交通,爲Facebook和Gmail等,你會看到有不斷XMLHTTPRequests被髮送到服務器。如果有新消息,它就會被獲取,您的前端會更新您的UI。所以他們正在使用AJAX。
這就是發生了什麼。
現在是socket.io,它可以推送給客戶端,但這是另一個故事。
我用dwr實現將一些信息推送到網絡上。它可能是這樣工作的,首先Web JS發佈到Web上,然後Web將這個通話保留,直到Web需要將某些內容推送到Web或超時。然後網絡調用您之前註冊的回調函數。
推什麼地方?你能舉個例子嗎? – 2011-12-28 11:05:44
你提出問題的方式似乎很奇怪。請你舉個例子 – vini 2011-12-28 11:12:39