2010-09-01 44 views

回答

17

Comet和Ajax都可以提供提供類似桌面功能和低用戶感知延遲的最終用戶體驗,只有Web Sockets不辜負提供本地方式的準備,以便準確有效地將事件傳入和傳出瀏覽器的延遲可以忽略不計。

通過輪詢,會產生不必要的請求,因此在低消息速率的情況下會不必要地打開和關閉很多連接(如輪詢它定期發送HTTP請求並立即收到響應)。

Web套接字可以消除開銷並顯着降低複雜性。

+8

網絡套接字是AJAX實時更新​​完成吧:) – Lethargy 2010-09-01 12:09:44

+0

@Lethargy您的評論提出的所有技術講座以上纔有意義...謝謝:) – 2013-02-22 15:49:42

0

目前尚不清楚我們確實需要它們。在將事件推送到客戶端的情況下,頁面可以在循環中發出普通的AJAX GET請求,並且服務器可以「掛起」,直到事件可用。經過一段時間後,服務器可以返回「無事件」響應,以便客戶端重新連接。在連接打開並且客戶機正在等待響應期間,有一個從服務器返回到客戶機的有效推送通道。

可以調整超時時間以減少不必要的重新連接數量,儘管它通常不會是無限的,因爲如果服務器端框架似乎掛起太久,大多數服務器框架都會終止服務器端過程。

鑑於這種現有的能力,問題是:新的通信框架確實增加了顯着的價值什麼可以已經完成?它不會真正實現無法完成的事情。它只會稍微改善它。

+1

你將如何實現的東西像使用'XmlHttpRequest'的BitTorrent客戶端或VNC客戶端? – 2010-09-01 13:06:49

+0

你可以通過HTTP實現類似的協議來實現「類似」的東西。對於一個笑話,我曾經通過HTTP做過套接字隧道代理,其中一方將數據發佈到Web應用程序,另一方會讀取數據並將其傳送,從而根據大量單獨的HTTP事務模擬流。令我驚訝的是,它實際上可用作Microsoft遠程桌面會話的管道。任何現有的協議都可以用這種方式來模擬。相當你爲什麼想這樣做是另一個問題。 – 2010-09-01 15:25:03

+1

速度和簡單。循環中的AJAX GET請求是一種醜陋而緩慢的攻擊,它提供了websockets乾淨而優雅地提供的相同功能。是的,請。 – 2013-09-16 13:31:02

8

1的WebSocket是一種天然全雙工,雙向 ,單插槽連接。使用WebSocket,您的HTTP請求會變成 單個請求來打開WebSocket連接,並重復使用從客戶端到服務器以及服務器到客戶端的相同連接 。

2-WebSocket減少延遲。例如,與輪詢不同, WebSocket發出一個請求。服務器不需要等待來自 客戶端的請求。同樣,客戶端可以隨時向服務器發送消息。這個單一的 請求極大地減少了輪詢的等待時間,輪詢時間間隔發送一個請求,不管 是否有消息可用。

3-WebSocket使實時通信更高效。 您可以通過HTTP始終使用輪詢(有時甚至是流式傳輸)來通過HTTP接收 通知。但是,WebSocket節省了帶寬,CPU功率和延遲。 WebSocket是性能上的創新。

4-WebSocket是一種底層網絡協議,使您能夠在其上構建其他標準 協議。

5-WebSocket是努力爲提供高級功能的一部分,以便與其他平臺競爭。

6的WebSocket是關於簡單