WebRTC和Websockets。有区别吗?

时间:2012-10-05 03:45:37

标签: javascript html5 websocket socket.io webrtc

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

4 个答案:

答案 0 :(得分:83)

WebRTC有两个方面。

  1. JavaScript API(getUserMedia),允许应用访问摄像头和麦克风硬件。您可以使用此访问权限在本地显示流(可能是applying effects),或通过网络发送流。您可以将数据发送到服务器,也可以使用...
  2. PeerConnection,一种允许浏览器建立直接点对点套接字连接的API。您可以直接与其他人的浏览器建立连接并直接交换数据。这对于像视频这样的高带宽数据非常有用,您不希望服务器必须处理中继大量数据。
  3. 看一下the demos,看看WebRTC的两个部分是否正常运作。

    简而言之:

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

答案 1 :(得分:13)

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

答案 2 :(得分:4)

除了peerConnection,您还可以查看WebRTC数据通道草稿:http://tools.ietf.org/html/draft-jesup-rtcweb-data-protocol-00,它基本上是双向的udp。这可能是WebSockets的一个非常有价值的替代品,因为它没有tcp连接的“负面”。

答案 3 :(得分:2)

不,WebRTC未定义信令。

这是IETF的一篇文章,它解释了为什么它不是: http://www.ietf.org/mail-archive/web/rtcweb/current/msg01143.html

这意味着您可以自由选择交换网络信息的方式。即你可以使用websockets,HTTP甚至电子邮件,但这有点困难:)