用于低级数据通信的WebRTC和WebSockets有什么区别

lvi*_*cks 41 websocket webrtc

我试图了解WebRTC和WebSockets之间的区别,以便我可以更好地了解哪种情况需要什么.我很好奇两个方面的广泛想法(主要是基于网络,但可能是一个专用的服务器应用程序)彼此交谈.

假设:

  • 显然,对于ad-hoc网络,WebRTC因其本身支持ICE协议/方法而获胜.

问题:

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

小智 40

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

因此,Websocket旨在实现可靠的通信.如果要发送必须可靠发送的任何数据,这是很好的选择.

使用WebRTC时,传输的流不可靠.某些数据包可能会在网络中丢失.如果你发送关键数据是很糟糕的,例如对于财务处理,当发送音频或视频流时,相同的问题是理想的,因为某些帧可能丢失,而没有任何明显的质量问题.

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

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

obe*_*tet 19

WebRTC指定通过RTP进行媒体传输..在某些情况下可以使用P2P.无论如何要建立一个webRTC会话,你也需要一个信令协议..而且对于那个WebSocket来说是一个可能的选择.换句话说:除非您想要流式传输实时媒体,否则WebSocket可能更适合.


nak*_*kib 9

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

问题2 就像我在上一个响应中所说的那样,如果你想要一个服务器 - 客户端通信,Websockets会更好,并且有很多实现要做这个(即jWebSocket).要在服务器中添加支持以与WebRTC DataChannel建立连接,可能需要几天的生命和健康.:)