WebRTC和WebSockets在低级数据通信方面有什么区别?

我想了解WebRTC和WebSockets之间的区别,以便我可以更好地了解哪个scheme需要什么。 我很好奇双方的主要想法(主要基于networking,但可能是一个专用的服务器应用程序)相互交谈。

假设:

  • 显然,对于专门的networking,WebRTC因为它本身支持ICE协议/方法而获胜。

问题:

  • 关于浏览器中两个已知方之间的直接通信,如果我不是依靠发送多媒体数据,而且我只对发送整型数据感兴趣,WebRTC是否给我比web数据encryption更好的优势?
  • 关于专用服务器与基于浏览器的客户端通话,哪个平台给我一个优势? 我需要编写一个WebRTC服务器(这是可能的浏览器?),或者我需要编写一个WebSocket服务器(快速谷歌search让我觉得这是可能的)。

WebRTC通过RTP指定媒体传输,在某些情况下可以工作在P2P上。 在任何情况下,build立一个webRTC会话,你也需要一个信令协议..并为此WebSocket是一个可能的select。 换句话说,除非你想传输实时媒体,WebSocket可能更适合。

有一个显着的区别:Websocket通过TCP工作,WebRTC通过UDP工作。 事实上,WebRTC是SRTP协议,具有STUN,ICE,DTLS等一些附加function,以及自适应抖动缓冲器,AEC,AGC等内部VoIPfunction。

所以,Websocket是专为可靠的沟通。 如果你想发送任何必须可靠发送的数据,这是一个很好的select。

当您使用WebRTC时,传输的stream不可靠。 有些数据包可能会丢失在networking中。 如果您发送关键数据(例如财务处理),这是不好的,但是当您发送audio或videostream时,同样的问题非常适合,在这种情况下,某些帧可能会丢失而没有任何明显的质量问题。

如果您想通过WebRTC发送数据通道,则应该有一些前向纠错algorithm来恢复networking中丢失dataframe的数据。

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

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