WebRTC与WebSocket:如果WebRTC可以处理视频、音频和数据,为什么我需要WebSocket?

WebRTC与WebSocket:如果WebRTC可以处理视频、音频和数据,为什么我需要WebSocket?,websocket,webrtc,Websocket,Webrtc,因此,我正在寻找建立一个聊天应用程序,将允许视频,音频和文本。我花了一些时间研究WebSocket和WebRTC,以决定使用哪个。由于WebRTC有很多视频和音频应用程序,这听起来是一个合理的选择,但我还有其他的事情要考虑吗? 请随意分享您的想法 例如: 由于WebRTC是新的,所以它只在某些浏览器上可用,而WebSocket似乎在更多的浏览器中可用 可伸缩性-Websockets使用服务器进行会话,WebRTC似乎是p2p 多路复用/多聊天室-用于Google+聊天室,我仍在观看如何实现的演

因此,我正在寻找建立一个聊天应用程序,将允许视频,音频和文本。我花了一些时间研究WebSocket和WebRTC,以决定使用哪个。由于WebRTC有很多视频和音频应用程序,这听起来是一个合理的选择,但我还有其他的事情要考虑吗? 请随意分享您的想法

例如:

  • 由于WebRTC是新的,所以它只在某些浏览器上可用,而WebSocket似乎在更多的浏览器中可用

  • 可伸缩性-Websockets使用服务器进行会话,WebRTC似乎是p2p

  • 多路复用/多聊天室-用于Google+聊天室,我仍在观看如何实现的演示应用程序

  • 服务器-WebSocket需要RedisessionStore或RabbitMQ来跨多台计算机进行扩展


    • 是webRTC还是websockets?为什么不两者都用呢

      在构建视频/音频/文本聊天时,webRTC绝对是一个不错的选择,因为它使用对等技术,一旦连接启动并运行,您就不需要通过服务器进行通信(除非使用TURN)

      在设置webRTC通信时,必须使用某种信令机制。WebSocket可能是一个不错的选择,但webRTC是获取视频/音频/文本信息的方式。聊天室是在信令中完成的

      但是,正如您所提到的,并不是每个浏览器都支持webRTC,因此WebSocket有时可以作为这些浏览器的一个很好的后备方案。

      WebSocket:

      • 已批准IETF标准(6455),支持所有现代浏览器,甚至使用web socket js polyfill的传统浏览器

      • 使用与HTTP兼容的握手和默认端口,使其更易于与现有防火墙、代理和web服务器基础架构一起使用

      • 更简单的浏览器API。基本上只有一个构造函数和几个回调

      • 仅客户端/浏览器到服务器

      • 仅支持可靠的顺序传输,因为它是基于TCP构建的。这意味着数据包丢弃可以延迟所有后续数据包

      WebRTC:

      • Chrome和Firefox刚刚开始支持。MS提出了一个不兼容的变体。DataChannel组件在Firefox和Chrome之间尚不兼容

      • WebRTC在理想情况下是浏览器到浏览器的,但即使如此,也几乎总是需要信令服务器来设置连接。目前最常见的信令服务器解决方案使用WebSocket

      • 传输层是可配置的,应用程序可以选择连接是否正常和/或可靠

      • 复杂的多层浏览器API。有JS LIB可以提供一个更简单的API,但它们还很年轻,而且变化很快(就像WebRTC本身一样)


        • WebRTC专为高性能、高质量的视频、音频和任意数据通信而设计。换句话说,对于与您描述完全相同的应用程序

          WebRTC应用程序需要一项服务,通过该服务可以交换网络和媒体元数据,这一过程称为信令。然而,一旦信令发生,视频/音频/数据就直接在客户端之间进行流传输,从而避免了通过中间服务器进行流传输的性能成本

          另一方面,WebSocket设计用于客户端和服务器之间的双向通信。通过WebSocket传输音频和视频是可能的(例如,请参见),但该技术和API并不像WebRTC那样为高效、健壮的流媒体而设计

          正如其他答复所说,WebSocket可用于发送信号


          我维护了一个列表:强烈建议您从2013年谷歌关于WebRTC的I/O开始。WebSocket使用TCP协议

          WebRTC主要是UDP

          因此,使用WebRTC代替Websocket的主要原因是延迟。 使用websocket流媒体,您将获得高延迟或低延迟的断断续续播放。使用WebRTC,您可以实现低延迟和平滑播放,这对于VoIP通信至关重要


          试着用网络损耗测试这些技术,即2%。您将在Websocket流中看到高延迟。

          比较Websocket和webrtc是不公平的

          Websocket基于TCP之上。与tcp不同,可以从websocket数据包的头信息中检测数据包的边界

          通常,webrtc使用websocket。webrtc的信令没有定义,这取决于服务提供商想要使用哪种信令。它可以是SIP、HTTP、JSON或任何文本/二进制消息


          可以使用websocket发送/接收信令消息

          安全是你错过的一个方面

          使用Websockets,数据必须通过中央Web服务器传输,该服务器通常可以查看所有流量并可以访问这些流量

          使用WebRTC,数据是端到端加密的,不通过服务器(有时需要TURN服务器除外,但它们无法访问它们转发的消息体)

          这取决于您的应用程序,可能重要,也可能不重要


          如果您正在发送大量数据,由于webRTC的P2P架构而节省的云带宽成本也值得考虑。

          webRTC是对等连接的一部分。 我们都知道,在创建点对点连接之前,需要握手过程来建立点对点连接。
          Websocket和WebRTC可以一起使用,Websocket作为WebRTC的信号通道,WebRTC是视频/音频/文本通道,WebRTC也可以在UDP中轮流中继,轮流中继支持TCP HTTP也支持HTTPS。
          许多项目同时使用Websocket和WebRTC。

          感谢您提供的详细答案。。。两年后有什么更新吗?我建议大家看看上面的相关资源-参见。也不要