2012-09-07 60 views
41

我想了解的WebRTC和WebSockets的之間的差異,這樣我可以更好地瞭解哪些情況下對什麼叫的WebRTC和WebSockets的之間的區別。我很好奇雙方的主要想法(主要是基於網絡的,但可能是一個專用的服務器應用程序)相互交談。是什麼低級數據通信

假設:

  • 顯然在問候ad-hoc網絡,的WebRTC贏得,因爲它本身支持的ICE協議/方法。

問題:

  • 關於瀏覽器的兩個已知雙方之間的直接溝通,如果我不依賴於發送多媒體數據,我只在發送整數數據感興趣,確實的WebRTC給我任何比數據加密以外的webSockets更有優勢?
  • 關於專用服務器講一個基於瀏覽器的客戶端,平臺給我的優勢在哪裏?我需要編寫一個WebRTC服務器(這可能是出於瀏覽器?),或者我需要編寫一個WebSocket服務器(快速谷歌搜索讓我覺得這是可能的)。
+1

瀏覽器 - >經由瀏覽器的WebSockets通信是不可能的。問題仍然存在,無論WebSock或WebRTC是否更適合瀏覽器 - >服務器通信。 – lvicks

+2

WebRTC datachannel api將爲我們提供非常棒的功能 - 但坦率地說:對於您的問題來說:WebSockets是傳輸數據的最佳選擇---而WebRTC在這種情況下無法與WebSocket競爭! ---- WebRTC旨在共享媒體流而不是數據流---數據流是擴展或部分---不是整個主題! ---(這只是我個人的觀點,所以如果我錯了,我很抱歉!) –

回答

19

的WebRTC指定媒體傳輸通過RTP ..這可以在某些情況下工作,P2P。在任何情況下,建立一個webRTC會話,你也需要一個信令協議......並且爲此WebSocket是一個可能的選擇。換句話說:除非你想傳輸實時媒體,否則WebSocket可能更適合。

+0

。 。 。因此,對於Udemy風格的視頻傳輸,我們不需要WebRTC或WebSockets?對於noob問題抱歉。如果你能解釋,這將是美好的。 – dotslash

+0

我不知道Udemy是什麼,對不起。我不是玩家.. – oberstet

+0

嘿,不,這不是遊戲。這是一個銷售視頻課程的網站,教師已經上傳了他們的視頻,這些視頻流向付費用戶。有趣的部分是它也保存了每個視頻的進度,並且可以根據需要跳轉到該部分。它甚至允許在視頻時間線中的各個點上書籤。我想知道要做出這樣的事情需要什麼樣的堆棧。 – dotslash

9

問題1:是的。 WebRTC的DataChannel部分在這種情況下爲您提供了優勢,因爲它允許您在瀏覽器之間創建點對點通道,以發送和接收任何所需的原始數據。 Websockets強制您使用服務器來連接雙方。

問題2就像我在前面迴應稱,WebSockets的是更好,如果你想有一個服務器 - 客戶端通信,並且有許多實現這樣做(即jWebSocket)。要在服務器中添加支持以建立與WebRTC DataChannel的連接,可能需要幾天的生命和健康。 :)

36

有一個顯著差異:WebSockets的通過TCP的作品,通過的WebRTC工作UDP。事實上,WebRTC是具有諸如STUN,ICE,DTLS等一些附加功能的SRTP協議以及諸如自適應抖動緩衝器,AEC,AGC等的內部VoIP功能。因此,WebSocket被設計用於可靠通信。如果你想發送任何必須可靠發送的數據,這是一個很好的選擇。

當您使用的WebRTC,傳輸的數據流是不可靠的。一些數據包可能會丟失在網絡中。如果您發送關鍵數據(例如財務處理),那麼這很不好,當您發送音頻或視頻流時,同樣的問題非常適合,其中某些幀可能會丟失而沒有任何明顯的質量問題。

如果你想通過WebRTC發送數據通道,你應該有一些前向糾錯算法來恢復數據,如果數據幀丟失在網絡中。

+0

如果您需要傳輸數據而不是媒體,儘管使用UDP(https://w3c.github.io/webrtc-pc/#rtcdatachannel,第4段),但WebRTC數據通道默認是可靠的。無需修改自己的糾錯算法。 – jamix