WebRTC vs Websockets:如果WebRTC可以做视频,音频和数据,为什么我需要Websockets



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

像这样的事情:

  • 由于是新的WebRTC仅在某些浏览器上可用,而WebSockets似乎在更多浏览器中可用。

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

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

  • 服务器 - Websockets 需要 RedisSessionStore 或 RabbitMQ 才能跨多台机器进行扩展。

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

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

另一方面,WebSocket 是为客户端和服务器之间的双向通信而设计的。可以通过WebSocket流式传输音频和视频(例如,请参阅此处),但是该技术和API本质上并不是像WebRTC那样为高效,强大的流式传输而设计的。

正如其他回复所说,WebSocket 可用于信令。

我维护着一个WebRTC资源列表:强烈建议你从2013年Google I/O关于WebRTC的演示开始。

Websockets使用TCP协议。

WebRTC主要是UDP。

因此,使用WebRTC而不是Websocket的主要原因是延迟。使用 websocket 流式传输,您将拥有高延迟或低延迟的断断续续的播放。使用WebRTC,您可以实现低延迟和流畅的播放,这对于VoIP通信至关重要。

只需尝试在网络丢失的情况下测试这些技术,即 2%。您将在 Websocket 流中看到高延迟。

WebSockets:

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

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

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

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

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

网络实时通信中心:

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

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

  • 传输层是可配置的,应用程序能够选择连接是否有序和/或可靠。

  • 复杂和多层的浏览器 API。有一些JS库提供了一个更简单的API,但这些库是年轻且快速变化的(就像WebRTC本身一样)。

webRTC还是websockets?为什么不同时使用两者。

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

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

但是,正如你提到的,并不是每个浏览器都支持webRTC,所以websockets有时可以成为这些浏览器的一个很好的后备。

安全性是您错过的一个方面。

使用Websockets,数据必须通过中央Web服务器,该服务器通常可以看到所有流量并可以访问它。

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

根据您的应用,这可能很重要,也可能无关紧要。

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

比较websocket和webrtc是不公平的。

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

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

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

Webrtc 是点对点连接的一部分。我们都知道,在创建点对点连接之前,需要握手过程来建立点对点连接。而 websocket 扮演握手过程的角色。

Websocket 和 WebRTC 可以一起使用,Websocket 作为 WebRTC 的信号通道,而 webrtc 是视频/音频/文本通道,WebRTC 也可以在 UDP 中在 TURN 中继中,TURN 中继支持 TCP HTTP 也支持 HTTPS。许多项目同时使用 Websocket 和 WebRTC。

相关内容

  • 没有找到相关文章

最新更新