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

时间:2012-09-07 20:10:26

标签: websocket webrtc

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

假设:

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

问题:

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

3 个答案:

答案 0 :(得分:39)

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

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

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

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

答案 1 :(得分:19)

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

答案 2 :(得分:9)

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

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