我试图了解WebRTC和WebSockets之间的区别,以便我可以更好地了解哪些场景需要什么。我很好奇两个方面的广泛想法(主要是基于网络,但可能是一个专用的服务器应用程序)彼此交谈。
假设:
问题:
答案 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建立连接,可能需要几天的生命和健康。 :)