Quelle est la différence entre WebRTC et WebSockets pour la communication de données de bas niveau

J’essaie de comprendre la différence entre WebRTC et WebSockets pour mieux comprendre quel scénario appelle quoi. Je suis curieux au sujet de l’idée générale selon laquelle deux parties (principalement basées sur le Web, mais potentiellement une application de serveur dédiée) se parlent.

Supposition:

  • En ce qui concerne les réseaux ad hoc, il est clair que WebRTC gagne car il supporte nativement le protocole / la méthode ICE.

Des questions:

  • En ce qui concerne la communication directe entre deux parties connues dans le navigateur, si je ne me fie pas à l’envoi de données multimédia et que je souhaite uniquement envoyer des données entières, WebRTC me procure-t-il des avantages autres que le cryptage des données?
  • En ce qui concerne un serveur dédié parlant à un client basé sur un navigateur, quelle plate-forme me donne un avantage? J’aurais besoin de coder un serveur WebRTC (est-ce possible en dehors du navigateur?) Ou je devrais coder un serveur WebSocket (une recherche rapide sur Google me fait penser que cela est possible).

WebRTC spécifie le transport multimédia sur RTP .. qui peut fonctionner en P2P dans certaines circonstances. Dans tous les cas, pour établir une session webRTC, vous aurez également besoin d’un protocole de signalisation. WebSocket est un choix probable. En d’autres termes: à moins que vous ne souhaitiez diffuser des médias en temps réel, WebSocket convient probablement mieux.

Il y a une différence significative: Websockets fonctionne via TCP, WebRTC fonctionne via UDP. En fait, WebRTC est un protocole SRTP avec des fonctionnalités supplémentaires telles que STUN, ICE, DTLS, etc., et des fonctionnalités VoIP internes telles que le tampon de gigue adaptatif, AEC, AGC, etc.

Websocket est donc conçu pour une communication fiable. C’est un bon choix si vous souhaitez envoyer des données qui doivent être envoyées de manière fiable.

Lorsque vous utilisez WebRTC, le stream transmis n’est pas fiable. Certains paquets peuvent être perdus dans le réseau. Si vous envoyez des données critiques, par exemple pour un traitement financier, le même problème est idéal lorsque vous envoyez un stream audio ou vidéo lorsque certaines images peuvent être perdues sans problèmes de qualité notables.

Si vous souhaitez envoyer un canal de données via WebRTC, vous devez disposer d’un algorithme de correction d’erreur directe pour restaurer les données en cas de perte d’une trame de données sur le réseau.

Question 1: Oui. La partie DataChannel de WebRTC vous offre des avantages dans ce cas, car elle vous permet de créer un canal poste à poste entre les navigateurs pour envoyer et recevoir les données brutes souhaitées. Websockets vous oblige à utiliser un serveur pour connecter les deux parties.

Question 2 Comme je l’ai dit dans la réponse précédente, les Websockets sont mieux si vous voulez une communication serveur-client, et il existe de nombreuses implémentations pour le faire (par exemple, jWebSocket ). Pour append une prise en charge sur un serveur afin d’établir une connexion avec WebRTC DataChannel, cela peut vous prendre quelques jours de vie et de santé. 🙂