2012-10-05 38 views
47

我假设WebRTC是一种解码/编码音频和视频的API,但服务器和客户端之间的通信是通过网络套接字或其他网络协议完成的?我有点困惑。 WebRTC是否有自己的通信协议?WebRTC和Websockets。是否有区别

回答

81

WebRTC有两个方面。

  1. JavaScript API(getUserMedia)允许应用访问摄像头和麦克风硬件。您可以使用此访问权限在本地简单显示流(可能为applying effects),或通过网络发送流。你可以将数据发送到服务器,或者您可以使用...
  2. PeerConnection,允许浏览器建立直接对等网络套接字连接的API。您可以直接与其他人的浏览器建立连接,并直接交换数据。这对于像视频这样的高带宽数据非常有用,因为您不希望服务器必须处理大量数据的中继。

看看the demos看到WebRTC的两个部分在行动。

所以一言以蔽之:

  • 的WebSockets允许浏览器和Web服务器之间的全双工通信。
  • WebRTC的PeerConnection允许两个浏览器之间的全双工通信。
+2

哇...谢谢你也许是我可以期望的最简洁的答案。 *所以PeerConnection是一个P2P连接,握手阶段是否需要混合服务器?是任何PeerConnection的API请求的服务器? – AndrewMcLagan

+7

'握手阶段是否需要混合服务器?'是。 WebRTC已经使用JSEP架构实现,这意味着用户发现和信令是通过单独的通信渠道(例如,使用WebSocket或XHR和DataChannel API)完成的。请参阅http://apprtc.appspot.com示例或(对自我推销表示歉意)http://www.html5rocks.com/en/tutorials/webrtc/basics/#toc-signalling –

+1

@ josh3736当您说“direct peer对等套接字“和”全双工通信“是否意味着有人在P2P通信(不是TCP,但是类似的)的UDP协议之上构建了一个可靠的,分组排序的和错误检查的解决方案?我的印象是WebRTC不支持P2P TCP连接。 –

12

WebRTC使用RTP(基于UDP协议)进行媒体传输,但需要使用带外信令通道来建立通信。信号通道的一个选择是WebSocket。

3

而不是peerConnection你也可以看看WebRTC数据通道草案:http://tools.ietf.org/html/draft-jesup-rtcweb-data-protocol-00这基本上是双向udp。这对于WebSockets来说可能是一个非常有价值的替代方案,因为它没有tcp连接的“负面”方面。

+0

是否由任何浏览器实现?有没有例子? – appsthatmatter

+0

@ jjoe64 peerConnection已在Chrome和FireFox示例中实现:http://mozilla.github.com/webrtc-landing/ – spicyramen

+1

需要连接浏览器和服务器(node.js)。不是p2p – appsthatmatter

2

不,信令不是由WebRTC定义的。

这里是由IETF的帖子里面解释了它不错的,为什么它不是: http://www.ietf.org/mail-archive/web/rtcweb/current/msg01143.html

这意味着你可以自由选择你如何交换的网络信息。即你可以使用websockets,HTTP甚至电子邮件,但这将是一个有点斗争:)

相关问题