回答
Comet和Ajax都可以提供提供類似桌面功能和低用戶感知延遲的最終用戶體驗,只有Web Sockets不辜負提供本地方式的準備,以便準確有效地將事件傳入和傳出瀏覽器的延遲可以忽略不計。
通過輪詢,會產生不必要的請求,因此在低消息速率的情況下會不必要地打開和關閉很多連接(如輪詢它定期發送HTTP請求並立即收到響應)。
Web套接字可以消除開銷並顯着降低複雜性。
目前尚不清楚我們確實需要它們。在將事件推送到客戶端的情況下,頁面可以在循環中發出普通的AJAX GET請求,並且服務器可以「掛起」,直到事件可用。經過一段時間後,服務器可以返回「無事件」響應,以便客戶端重新連接。在連接打開並且客戶機正在等待響應期間,有一個從服務器返回到客戶機的有效推送通道。
可以調整超時時間以減少不必要的重新連接數量,儘管它通常不會是無限的,因爲如果服務器端框架似乎掛起太久,大多數服務器框架都會終止服務器端過程。
鑑於這種現有的能力,問題是:新的通信框架確實增加了顯着的價值什麼可以已經完成?它不會真正實現無法完成的事情。它只會稍微改善它。
你將如何實現的東西像使用'XmlHttpRequest'的BitTorrent客戶端或VNC客戶端? – 2010-09-01 13:06:49
你可以通過HTTP實現類似的協議來實現「類似」的東西。對於一個笑話,我曾經通過HTTP做過套接字隧道代理,其中一方將數據發佈到Web應用程序,另一方會讀取數據並將其傳送,從而根據大量單獨的HTTP事務模擬流。令我驚訝的是,它實際上可用作Microsoft遠程桌面會話的管道。任何現有的協議都可以用這種方式來模擬。相當你爲什麼想這樣做是另一個問題。 – 2010-09-01 15:25:03
速度和簡單。循環中的AJAX GET請求是一種醜陋而緩慢的攻擊,它提供了websockets乾淨而優雅地提供的相同功能。是的,請。 – 2013-09-16 13:31:02
這裏是在websocket.org在投票的一篇文章有關benefits of websocket
1的WebSocket是一種天然全雙工,雙向 ,單插槽連接。使用WebSocket,您的HTTP請求會變成 單個請求來打開WebSocket連接,並重復使用從客戶端到服務器以及服務器到客戶端的相同連接 。
2-WebSocket減少延遲。例如,與輪詢不同, WebSocket發出一個請求。服務器不需要等待來自 客戶端的請求。同樣,客戶端可以隨時向服務器發送消息。這個單一的 請求極大地減少了輪詢的等待時間,輪詢時間間隔發送一個請求,不管 是否有消息可用。
3-WebSocket使實時通信更高效。 您可以通過HTTP始終使用輪詢(有時甚至是流式傳輸)來通過HTTP接收 通知。但是,WebSocket節省了帶寬,CPU功率和延遲。 WebSocket是性能上的創新。
4-WebSocket是一種底層網絡協議,使您能夠在其上構建其他標準 協議。
5-WebSocket是努力爲提供高級功能的一部分,以便與其他平臺競爭。
6的WebSocket是關於簡單
- 1. MySQL連接器網絡爲什麼我們需要它?
- 2. 爲什麼我們需要神經網絡中的偏差?
- 3. 爲什麼我們需要IAudioRenderClient接口
- 4. 爲什麼我們需要java中的私有嵌套接口?
- 5. 爲什麼我們在有端口號時需要套接字名稱?
- 6. DavLockDB:我們需要什麼?
- 7. 爲什麼我們需要人工神經網絡中的圖層?
- 8. 爲什麼我們需要simple_one_for_one?
- 9. 爲什麼我們需要TensorFlow tf.Graph?
- 10. 爲什麼我們需要使用prompt.start()?
- 11. 爲什麼我們需要scalaz.stream迭代?
- 12. 爲什麼我們需要WCF
- 13. 爲什麼我們需要Anaconda 2.7?
- 14. 爲什麼我們需要編寫log.isDebugEnabled?
- 15. 爲什麼我們需要ng-click?
- 16. 爲什麼我們需要Control.Lens.Reified?
- 17. 我們爲什麼需要纖維
- 18. 爲什麼我們需要org.junit.ComparisonFailure?
- 19. 爲什麼我們需要addRequestHeader方法?
- 20. 爲什麼我們需要時代?
- 21. 爲什麼我們需要ContinueWith方法?
- 22. 爲什麼我們需要Java NIO Selector?
- 23. 爲什麼我們需要使用ExitWindowsEx
- 24. 爲什麼我們需要包裝類
- 25. 爲什麼我們需要在JavaScript
- 26. 爲什麼我們需要設置SONAR_RUNNER_OPTS?
- 27. 爲什麼我們需要ioc容器
- 28. mongodb爲什麼我們需要getSisterDB
- 29. 爲什麼我們需要BeginGetResponse和BeginRead?
- 30. 爲什麼我們需要fieldset標籤?
網絡套接字是AJAX實時更新完成吧:) – Lethargy 2010-09-01 12:09:44
@Lethargy您的評論提出的所有技術講座以上纔有意義...謝謝:) – 2013-02-22 15:49:42