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

1Ma*_*tup 196 websocket webrtc

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

像:

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

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

  • 多路复用/多个聊天室 - 用于Google+环聊,我仍然可以查看有关如何实施的演示应用

  • 服务器 - Websockets需要RedisSessionStore或RabbitMQ来扩展多台计算机

Sam*_*ton 246

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

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

另一方面,WebSocket专为客户端和服务器之间的双向通信而设计.可以通过WebSocket流式传输音频和视频(例如,请参见此处),但技术和API并非本身设计用于以WebRTC的方式进行高效,强大的流式传输.

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

我保留了WebRTC资源列表:强烈建议您首先查看有关WebRTC 的2013 Google I/O 演示文稿.

  • 感谢您的详细解答...近两年后的任何更新? (2认同)
  • 我建议您查看上面链接的资源 - 请参阅https://g.co/webrtc. (2认同)
  • 也不是(我相信)WebRTC可以配置为对数据包顺序和内容不那么严格,所以它可以快得多,你不介意一些数据包丢失等(即有*最新*数据比拥有更重要)*所有*数据):http://stackoverflow.com/a/13051771/993683 (2认同)
  • @SamDutton,服务器当然可以作为对等点并使用 RTCDataChannel 本身的一端吗?对于现代 Web 编程来说 **我根本看不到 websocket 的任何优势?** 因为 RTCDataChannel 是 UDP/实时的? (2认同)

kan*_*aka 64

WebSockets简介:

  • 经过批准的IETF标准(6455),支持所有现代浏览器甚至是使用web-socket-js polyfill的旧版浏览器.

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

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

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

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

的WebRTC:

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

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

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

  • 复杂的多层浏览器API.有JS库提供一个简单的API,但这些年轻和快速变化的(就像自己的WebRTC).

  • 到目前为止,WebRTC浏览器支持要好得多.https://caniuse.com/#search=WebRTC (2认同)

ank*_*itr 51

Websockets使用TCP协议.

WebRTC主要是UDP.

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

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

  • 对于那些感兴趣的人,这里有进一步的解释:http://stackoverflow.com/a/13051771/993683 (2认同)

Mik*_*ren 38

webRTC或websockets?为什么不两者兼用.

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

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

但是,正如您所提到的,并非每个浏览器都支持webRTC,因此websockets有时可以成为这些浏览器的良好后备.


小智 9

安全是您错过的一个方面.

使用Websockets,数据必须通过中央网络服务器进行,​​中央网络服务器通常可以查看所有流量并可以访问它.

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

根据您的应用,这可能或不重要.

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

  • 认为 WebRTC 严格来说是一种点对点协议是一种误解。它开始作为基于服务器的 VOIP 替代方案在工业界得到广泛应用。 (2认同)

小智 8

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


Aus*_*tin 7

比较websocket和webrtc是不公平的.

Websocket基于TCP.与tcp不同,可以从websocket分组的头信息中检测分组的边界.

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

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


小智 5

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


归档时间:

查看次数:

85382 次

最近记录:

6 年,7 月 前