【问题标题】:What is the difference between WebRTC and WebSockets for low level data communication用于低级数据通信的 WebRTC 和 WebSockets 有什么区别
【发布时间】:2012-09-01 17:28:51
【问题描述】:

我试图了解 WebRTC 和 WebSockets 之间的区别,以便更好地了解哪种情况需要什么。我对两方(主要基于 Web,但可能是专用服务器应用程序)相互交谈的广泛概念感到好奇。

假设:

  • 很明显,在 ad-hoc 网络方面,WebRTC 胜出,因为它本身支持 ICE 协议/方法。

问题:

  • 关于浏览器中两个已知方之间的直接通信,如果我不依赖于发送多媒体数据,而我只对发送整数数据感兴趣,那么除了数据加密之外,WebRTC 是否比 webSockets 有任何优势?
  • 关于与基于浏览器的客户端通信的专用服务器,哪个平台有优势?我需要编写一个 WebRTC 服务器(这可能在浏览器之外吗?),或者我需要编写一个 WebSocket 服务器(快速的谷歌搜索让我认为这是可能的)。

【问题讨论】:

  • 浏览器 -> 无法通过 WebSockets 进行浏览器通信。问题仍然存在,WebSocks 或 WebRTC 是否更适合浏览器 -> 服务器通信。
  • WebRTC 数据通道 api 将为我们提供许多很棒的功能——但坦率地说:从您的问题的角度来看:WebSockets 是传输数据的最佳选择 --- 在这种情况下 WebRTC 无法与 WebSockets 竞争!! ---- WebRTC 旨在共享媒体流而不是数据流 --- 数据流是扩展或部分 --- 不是整个主题! ---(这只是我个人的观点,如果我错了,我很抱歉!)

标签: websocket webrtc


【解决方案1】:

有一个显着的区别:WebSockets 通过 TCP 工作,WebRTC 通过 UDP 工作。 实际上,WebRTC 是 SRTP 协议,具有一些附加功能,例如 STUN、ICE、DTLS 等,以及内部 VoIP 功能,例如 Adaptive Jitter Buffer、AEC、AGC 等。

因此,WebSockets 是为可靠通信而设计的。如果您想发送任何必须可靠发送的数据,这是一个不错的选择。

当您使用 WebRTC 时,传输的流是不可靠的。一些数据包可能会在网络中丢失。如果您发送关键数据(例如用于财务处理)则很糟糕,同样的问题非常适合您发送音频或视频流,其中某些帧可能会丢失而没有任何明显的质量问题。

如果你想通过WebRTC发送数据通道,你应该有一些前向纠错算法来在网络中丢失数据帧时恢复数据。

【讨论】:

  • 如果您需要传输数据而不是媒体,尽管使用 UDP,WebRTC 数据通道默认是可靠的(w3c.github.io/webrtc-pc/#rtcdatachannel,第 4 段)。无需修补自己的纠错算法。
【解决方案2】:

问题 1: 是的。 WebRTC 的 DataChannel 部分在这种情况下为您提供了优势,因为它允许您在浏览器之间创建一个对等通道来发送和接收您想要的任何原始数据。 Websockets 强制你使用服务器来连接双方。

问题 2 就像我在之前的回复中所说,如果您想要服务器-客户端通信,Websockets 会更好,并且有很多实现可以做到这一点(即jWebSocket)。要在服务器中添加支持以建立与 WebRTC 数据通道的连接,您可能需要几天的生命和健康。 :)

【讨论】:

  • 正如 OP 所问,他想知道 WebRTC 在客户端和服务器之间发送数据(如速度、标头开销、握手等)方面是否比 Websockets 有任何可能的优势。例如,Ajax 与WebSockets 和 Ajax WebRTC,它们将具有速度和性能。附言这是一个问题,我正在寻找答案。
【解决方案3】:

WebRTC 指定 RTP 上的媒体传输 .. 在某些情况下可以工作 P2P。无论如何,要建立 webRTC 会话,您还需要一个信令协议 .. 并且 WebSocket 是一个可能的选择。换句话说:除非您想流式传输实时媒体,否则 WebSocket 可能更合适。

【讨论】:

  • 。 . .那么,对于 Udemy 风格的视频交付,我们不需要 WebRTC 或 WebSockets 吗?对不起菜鸟问题。如果你能解释一下就太好了。
  • 嘿,不,这不是游戏。这是一个销售视频课程的网站,讲师上传了他们的视频,这些视频会流式传输给付费的用户。有趣的是,它还保存了每个视频的进度,并且可以在需要时跳转到该部分。它甚至允许在视频时间轴的各个点添加书签。我想知道制作这样的东西需要什么样的堆栈。
  • 在不了解更多信息的情况下,我会使用 WebSocket(嗯,WAMP)进行控制通信。应用程序的需求,但视频的 Youtube。
猜你喜欢
  • 2015-09-03
  • 2018-06-12
  • 2014-09-11
  • 1970-01-01
  • 1970-01-01
  • 2015-10-04
  • 2016-09-11
  • 2020-11-26
  • 2011-03-28
相关资源
最近更新 更多