WebRTC和WebSockets在底层数据通信方面有什么区别

WebRTC和WebSockets在底层数据通信方面有什么区别,websocket,webrtc,Websocket,Webrtc,我试图理解WebRTC和WebSockets之间的区别,以便更好地理解哪个场景需要什么。我对双方(主要是基于web的,但可能是一个专用的服务器应用程序)相互交谈的广泛想法感到好奇 假设: 显然,对于自组织网络,WebRTC获胜是因为它本机支持ICE协议/方法 问题: 关于浏览器中两个已知方之间的直接通信,如果我不依赖于发送多媒体数据,并且我只对发送整数数据感兴趣,那么WebRTC是否比WebSocket具有数据加密以外的任何优势 关于专用服务器与基于浏览器的客户端对话,哪个平台给了我优势?

我试图理解WebRTC和WebSockets之间的区别,以便更好地理解哪个场景需要什么。我对双方(主要是基于web的,但可能是一个专用的服务器应用程序)相互交谈的广泛想法感到好奇

假设:

  • 显然,对于自组织网络,WebRTC获胜是因为它本机支持ICE协议/方法
问题:

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

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

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


问题2正如我在前面的回答中所说,如果您需要服务器-客户机通信,WebSocket会更好,并且有很多实现(例如)。要在服务器中添加支持以建立与WebRTC数据通道的连接,可能需要几天的生命和健康时间。:)

有一个显著的区别:Websockets通过TCP工作,WebRTC通过UDP工作。 事实上,WebRTC是SRTP协议,具有一些附加功能,如STUN、ICE、DTLS等,以及内部VoIP功能,如自适应抖动缓冲、AEC、AGC等

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

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


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

Browser->Browser无法通过WebSockets进行通信。问题仍然存在,WebSockes或WebRTC是否更适合浏览器->服务器通信。WebRTC datachannel api将允许我们实现许多很棒的功能–但坦率地说:从您的问题角度来看:WebSockets是传输数据的最佳选择---在这种情况下,WebRTC无法与WebSockets竞争!!-----WebRTC旨在共享媒体流而不是数据流——数据流是扩展或部分——而不是整个主题(这只是我个人的观点,如果我错了,我道歉!)。所以,对于我的风格视频交付,我们不需要WebRTC或WebSocket?对不起,我的问题是noob。如果你能解释就好了。嘿,不,这不是游戏。这是一个销售视频课程的网站,讲师在该网站上传了他们的视频,并将视频流传送给付费用户。有趣的是,它还保存了每个视频的进度,如果需要,可以跳转到该部分。它甚至允许在视频时间轴的不同点上添加书签。我想知道制作这样的东西需要什么样的堆栈。我不知道更多,我会使用WebSocket(嗯,WAMP)来满足应用程序的控制通信需求,但Youtube用于视频。如果你需要传输数据而不是媒体,默认情况下WebRTC数据通道是可靠的,尽管使用UDP(第4段)。不需要修改自己的错误纠正算法。正如OP所问的,他想知道WebRTC在客户端和服务器之间发送数据方面是否比WebSocket有任何可能的优势,如速度、头开销、握手等。例如,使用WebSocket的Ajax和具有速度和性能的Ajax WebRTC。这是一个问题,我一直在寻找答案。