BT

Diffuser les Connaissances et l'Innovation dans le Développement Logiciel d'Entreprise

Contribuez

Sujets

Sélectionner votre région

Accueil InfoQ Actualités Dompter WebRTC : défis et opportunités pour les communications temps-réel

Dompter WebRTC : défis et opportunités pour les communications temps-réel

Lors de la conférence Qcon New York 2013, Gustavo Garcia a animé une session sur WebRTC, le nouveau composant HTML5 pour les communications temps-réel. WebRTC est un ensemble de technologies qui rend possible les communications temps-réel, à faible latence, pouvant par exemple être appliquées aux conférences audio et vidéo, ou au domaine des jeux. Bien que les communications temps-réel soient encore habituellement implémentées avec les websockets, WebRTC a l'avantage de réduire de façon notable la latence en s'attachant à établir des communications directes entre clients, "peer-to-peer", ou uniquement en effectuant des rebonds intermédiaires, via des tunnels, dans le cas où la communication directe n'est pas possible, par exemple à cause de translations NAT ou de firewalls.

Pour illustration, Garcia décrit les divers composants nécessaires à la construction d'un système de conférence audio ou vidéo à l'appui de technologies web. Établir une connexion directe entre deux participants est certainement le cas le plus simple et celui-ci nécessiterait un support des éléments suivants par le navigateur :

  1. La capacité de décoder et restituer les flux audio et vidéo
  2. La capacité de capturer des flux audio et vidéo à partir d'une webcam
  3. Des protocoles nécessaires à la négociation de l'échange (comme du "signaling")
  4. Des codecs adaptés pour des encodages et décodages audio et vidéo efficaces
  5. Des algorithmes pour la prise en charge de l'annulation de l'écho, l'atténuation de bruit, l'adaptation du flux aux fluctuations de bande passante ("bitrate adaption"), pour n'en citer que quelques-uns.

La plupart de ces éléments font maintenant partie d'HTML5, y compris le streaming et la capture vidéo et audio grâce à getUserMedia. L'API getUserMedia bénéficie également d'extensions expérimentales, pour l'heure disponibles avec les derniers builds de Chrome. Elles permettent entre autres de faire des captures d'écran, de tout un onglet de votre navigateur aussi bien que d'une portion de page web.

Une omission notable de WebRTC est le support direct du "signaling". Le signaling concerne l'établissement de l'appel : qui essaye d'appeler qui, le correspondant a-t-il accepté l'appel, etc. C'est au développeur d'implémenter cette partie, éventuellement à l'aide de websockets ou de long polling sur HTTP. Une autre partie de l'infrastructure que le développeur aura à déployer lui-même, ce sont les serveurs de tunnels à utiliser comme intermédiaires pour les utilisateurs ayant à traverser du NAT ou ceux se trouvant derrière un firewall restrictif. D'après Garcia, seuls 8% des appels nécessiteraient de tels serveurs intermédiaires.

Garcia décrit divers cas d'utilisation de WebRTC :

  • L'échange vidéo et audio en "one-on-one", c’est-à-dire l'appel direct entre deux participants. C'est le cas le plus simple à implémenter avec WebRTC.
  • Les échanges multi-participants, qui sont un peu plus difficiles à implémenter. Une option est de mettre en place un maillage réseau complet, où chaque participant est connecté à tous les autres. Cependant, cette approche ne pourra pas s'étendre au-delà de 5 à 6 participants à cause des fortes sollicitations du CPU et de la bande passante. Une alternative consiste à s'appuyer sur un serveur intermédiaire qui agrège les flux et les diffuse aux participants, séparément ou fusionnés en un seul flux.
  • La téléphonie. En permettant de connecter WebRTC à son réseau de téléphonie fixe, il est possible de passer des appels utilisant sa ligne fixe standard depuis son navigateur internet.
  • Les jeux. WebRTC rend possible les jeux temps-réel multi-joueurs en combinaison avec d'autres technologies HTML5 comme WebGL.
  • Les transferts de fichiers entre utilisateurs. Puisque WebRTC supporte les transferts de données arbitraires en mode participant-à-participant, on peut imaginer par exemple construire des applications de type "BitTorrent" avec cette technologie.

Bien que le support de WebRTC par les navigateurs actuels soit encore naissant (pour l'heure, seules les dernières versions de Chrome et Firefox le supportent), il existe de nombreux cas d'utilisation. Pour approfondir vos connaissances au sujet de cette technologie, reportez-vous à webrtc.org ou aux standards W3C associés.

Evaluer cet article

Pertinence
Style

Contenu Éducatif

BT