2012-09-07 45 views
41

Estoy tratando de entender la diferencia entre WebRTC y WebSockets para que pueda entender mejor cuál es el escenario para lo que llama. Tengo curiosidad acerca de la idea general de que dos partes (principalmente basadas en la web, pero potencialmente una sea una aplicación de servidor dedicada) se comuniquen entre sí.¿Cuál es la diferencia entre WebRTC y WebSockets para la comunicación de datos de bajo nivel

Supuesto:

  • evidente en lo que respecta a las redes ad-hoc, WebRTC ha sufrido ya que soporta de forma nativa el protocolo ICE/método.

Preguntas:

  • En cuanto a la comunicación directa entre dos partes conocidas en el navegador, si no me baso en el envío de datos multimedia, y sólo estoy interesado en el envío de datos enteros, lo hace WebRTC darme ventajas sobre webSockets que no sean cifrado de datos?
  • En cuanto a un servidor dedicado que habla a un cliente basado en navegador, ¿qué plataforma me da una ventaja? Tendría que codificar un servidor WebRTC (¿es esto posible fuera del navegador?), O tendría que codificar un servidor WebSocket (una búsqueda rápida en Google me hace pensar que esto es posible).
+1

Navegador -> La comunicación del navegador a través de WebSockets no es posible. La pregunta sigue siendo si WebSockes o WebRTC es mejor para el navegador -> comunicación del servidor. – lvicks

+2

WebRTC datachannel api nos permitirá funcionalidades asombrosas, pero francamente hablando: desde la perspectiva de su pregunta: WebSockets es la MEJOR opción para transferir datos --- ¡y WebRTC no puede competir con WebSockets en este caso! ---- WebRTC está diseñado para compartir flujos de medios, no flujos de datos, los flujos de datos son extensiones o partes, ¡no todo el asunto! --- (Este es solo mi punto de vista personal así que me disculpo si estoy equivocado!) –

Respuesta

19

WebRTC especifica el transporte de medios a través de RTP .. que puede funcionar P2P en determinadas circunstancias. En cualquier caso, para establecer una sesión webRTC necesitarás también un protocolo de señalización ... y para ese WebSocket es una opción probable. En otras palabras: a menos que desee transmitir medios en tiempo real, WebSocket es probablemente una mejor opción.

+0

. . . entonces, para la entrega de video estilo Udemy, ¿no necesitamos WebRTC o WebSockets? Perdón por la pregunta de novato. Será maravilloso si puedes explicarlo. – dotslash

+0

No tengo ni idea de qué es Udemy, lo siento. No soy un jugador. – oberstet

+0

Oye, no, no es un juego. Es un sitio web que vende cursos de video, donde los instructores han subido sus videos, que se transmiten a los usuarios que pagan. La parte interesante es que también guarda el progreso de cada video y puede saltar a esa parte si es necesario. Incluso permite marcadores en varios puntos de la línea de tiempo del video. Me preguntaba qué tipo de pila se necesitaría para hacer algo como esto. – dotslash

9

Pregunta 1: Sí. La parte de DataChannel de WebRTC le brinda ventajas en este caso, ya que le permite crear un canal de igual a igual entre los navegadores para enviar y recibir cualquier dato bruto que desee. Websockets te obliga a usar un servidor para conectar a ambas partes.

Pregunta 2 Como dije en la respuesta anterior, WebSockets son mejores si quieres una comunicación cliente-servidor, y hay muchas implementaciones de hacer esto (es decir jWebSocket). Para agregar soporte en un servidor para establecer una conexión con un DataChannel de WebRTC, puede llevarle algunos días de vida y salud. :)

36

Hay una diferencia significativa: Websockets funciona a través de TCP, WebRTC funciona a través de UDP. De hecho, WebRTC es un protocolo SRTP con algunas características adicionales, como STUN, ICE, DTLS, etc. y funciones internas de VoIP como Adaptive Jitter Buffer, AEC, AGC, etc.

Por lo tanto, Websocket está diseñado para una comunicación confiable. Es una buena elección si desea enviar cualquier información que deba enviarse de manera confiable.

Cuando utiliza WebRTC, la transmisión transmitida no es confiable. Algunos paquetes pueden perderse en la red. Es malo si envía datos críticos, por ejemplo para el procesamiento financiero, el mismo problema es ideal cuando envía transmisiones de audio o video donde algunos fotogramas se pueden perder sin ningún problema de calidad notable.

Si desea enviar datos a través del canal WebRTC, usted debe tener algún algoritmo de corrección de errores hacia adelante para restaurar los datos si una trama de datos se pierde en la red.

+0

Si necesita transmitir datos en lugar de medios, los canales de datos WebRTC son confiables por defecto a pesar de usar UDP (https://w3c.github.io/webrtc-pc/#rtcdatachannel, 4to párrafo). No es necesario retocar con un algoritmo de corrección de errores propio. – jamix

Cuestiones relacionadas