我正在編寫視頻cms,並希望所有用戶在進入時立即顯示新資產。 如果我是正確的,那麼facebook會實時更新其牆上頁面。所以當我發佈一些東西給朋友時,它立即顯示在他的牆上。正如他們所說,實時網絡。 我想知道你是怎麼做到的?不是客戶端 - 服務器通信的技術,而是服務器上發生的事情。 我瞭解觀察者模式的原理。 但牆壁實際上是一個消息表上的查詢。 觀察者如何知道用戶感興趣的查詢? 它是否包含所有連接用戶的所有查詢,並在新內容出現時重新執行它。 我相信Google即時可以這樣工作。 謝謝你幫助我。C#觀察者模式消息過濾
回答
當您打開Facebook時,請在瀏覽器中打開腳本時間表以查看頁面上正在執行的腳本。您會注意到每秒執行一次輪詢腳本。因此,頁面每秒鐘查看緩存幾次,以查看是否有任何可以顯示的新信息。
http://www.ajaxwith.com/Poll-vs-Push-Technology.html - 這應該給你一個關於這個問題的背景。
Facebook使用AJAX和JavaScript計時器在後臺輪詢查找任何已更改的內容。其他網站使用相同類型的功能來更新嵌入在頁面中的股票報價等。它不是真正立即更新,它的更新頻率與JavaScript計時器到達其服務器的頻率相同。這是因爲網絡瀏覽器使用HTTP,這是一個請求/響應協議。瀏覽器不會顯示任何不是對瀏覽器發起的請求的直接回應;沒有辦法只從您的網絡服務器直接發送內容到瀏覽器。
是的!你可以使用websockets。好的,並非所有的瀏覽器都支持這一點,但我的客戶確實;-) – Erik 2011-04-06 21:29:50
好吧,想象我的客戶端都有一個運行連接的c#應用程序,讓我們說一個服務器的wcf服務。我想讓它們保持最新狀態。這可以通過觀察者模式完成,因爲他們知道他們沒有打開簡單的列表,但是搜索結果等。 – Erik 2011-04-06 21:33:10
你仍然需要進行民意調查。 WCF服務不會推送數據,它會在發出請求時返回數據。從技術上講,你可以保持一個回調通道打開,並有很長的超時時間(我認爲最大值約爲24天),併發送數據,但根據我的經驗,這並不是特別可靠。如果服務器到達客戶端時遇到問題,它將關閉通道,但您的客戶端應用程序不知道,也不會嘗試重新初始化連接。 – 2011-04-06 21:45:53
- 1. 觀察者模式 - 觀察者創建
- 2. 觀察者模式 - 將信息傳遞給觀察者
- 3. 觀察者模式
- 4. 通過RMI實現觀察者模式
- 5. C++「雙向」觀察者模式
- 6. 觀察者模式C和Java
- 7. 實現C++ -to-lua觀察者模式?
- 8. C中的觀察者模式#
- 9. C++和Qt:觀察者模式錯誤
- 10. 最簡單的C++支持分佈式消息庫 - 觀察者模式
- 11. 觀察者模式-受試者保持到由觀察者
- 12. 異步觀察者模式
- 13. 實現觀察者模式
- 14. 瞭解觀察者模式
- 15. 觀察者模式imp
- 16. asp.net觀察者模式
- 17. jQuery和觀察者模式
- 18. 觀察者模式混淆
- 19. MVC和觀察者模式
- 20. 與觀察者模式
- 21. 觀察者模式建議
- 22. 觀察者模式類(JAVA)
- 23. Vue.js和觀察者模式
- 24. SI +觀察者模式
- 25. 觀察者模式vs MVC
- 26. python觀察者模式
- 27. 帶過濾器的觀察者模式,在什麼級別進行過濾?
- 28. 觀察者模式:如何區分觀察者
- 29. 具有兩個觀察者列表的觀察者模式
- 30. 觀察者設計模式 - 具體主題和觀察者
謝謝你的迴應。您的建議稱爲輪詢,並導致許多不必要的服務器和網絡過載。我在想服務器推送技術。但是現在我不知道在客戶端過濾數據時使用什麼樣的模式。 – Erik 2011-04-06 21:27:07