websockets websocket webrtc

websockets - websocket vs ajax



¿Cuál es la diferencia entre WebRTC y WebSockets para la comunicación de datos de bajo nivel? (3)

Estoy tratando de entender la diferencia entre WebRTC y WebSockets para poder entender mejor qué escenario requiere qué. Tengo curiosidad acerca de la idea general de dos partes (principalmente basadas en la web, pero potencialmente una de ellas es una aplicación de servidor dedicado) que hablan entre sí.

Suposición:

  • Claramente en lo que respecta a las redes ad-hoc, WebRTC gana, ya que admite de forma nativa el protocolo / método ICE.

Preguntas:

  • En lo que respecta a la comunicación directa entre dos partes conocidas en el navegador, si no confío en enviar datos multimedia y solo me interesa enviar datos enteros, ¿WebRTC me ofrece ventajas sobre webSockets que no sean cifrado de datos?
  • Con respecto a un servidor dedicado que habla con un cliente basado en navegador, ¿qué plataforma me da una ventaja? Necesitaría codificar un servidor WebRTC (¿es esto posible fuera del navegador?), O necesitaría codificar un servidor WebSocket (una búsqueda rápida en Google me hace pensar que esto es posible).

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 dato que deba enviarse de manera confiable.

Cuando utiliza WebRTC, el flujo transmitido 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 secuencias de audio o video donde se pueden perder algunos cuadros sin problemas de calidad notables.

Si desea enviar un canal de datos a través de WebRTC, debe tener algún algoritmo de corrección de errores para restaurar los datos si se perdió un marco de datos en la red.


WebRTC especifica el transporte de medios a través de RTP .. que puede funcionar P2P en ciertas circunstancias. En cualquier caso, para establecer una sesión de webRTC también necesitará 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.


Pregunta 1: Sí. La parte DataChannel de WebRTC le brinda ventajas en este caso, ya que le permite crear un canal de igual a igual entre navegadores para enviar y recibir cualquier información sin procesar que desee. Websockets le obliga a utilizar un servidor para conectar a ambas partes.

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