Retour sur la DotJs 2015 - Real World WebRTC

Cette fois-ci, parlons du talk d'Eric Schoffstall.

Si ce nom ne vous dit, peut-être que GulpJs vous parlera un peu plus ? Car il est en effet à l'origine de cet outils que nous utilisons à longueur de temps.

Et il nous a exposé la problématique qu'il a eu depuis la fin 2014: une application WebRTC. Le but: rendre accessible via une API le protocole RTC dans son navigateur. Autrement dit, pouvoir faire un tchat vidéo par exemple.

Même si à l'heure actuelle, le WebRTC est compatible sous Chrome, les dernières versions d'Android et de Firefox, il y a un an, ce n'était pas vraiment le cas. En effet, il y a un an, seul Chrome proposait un vrai support. Et faire une application WebRTC qui ne fonctionne que sous Chrome n'est pas une application, c'est un prototype.



Du coup, il s'est posé la question: que faut-il faire pour avoir une application WebRTC qui soit uniforme et consistant sur tous les navigateurs / devices ?
  • Faut-il utiliser des adapteurs ? Voir des plugins ?
  • Faut-il utiliser des polyfills ? Autrement, un bout de code JavaScript qui puisse "simuler" WebRTC.
  • Existe-t-il des APIs spécifiques pour chaque navigateur / plateforme ?
  • Et que sera donc au final le support des différentes plateformes / navigateurs.

Et à toutes ces questions, Eric a résumé cela en une phrase:

"WebRTC is a cool vision, but WebRTC is difficult"



Il a donc commencé par chercher comment faire fonctionner cela sous Firefox ou Internet Explorer. Il a pour utilisé un plugin / polyfill qui se nomme Temasys. Il semblerait que ce plugin soit plutôt simple de mise en oeuvre. Le "hic" est qu'il faut des adapteurs en fonction de Windows et de Mac.

Néanmoins, avec la vélocité des mises à jour des navigateurs, nous pouvons compter pour Firefox / Opera une mise en place de WebRTC. Il reste toujours le cas d'Internet Explorer (oups, je voulais dire Edge ...).


Du côté de la mobilité, c'est très galère. Android supporte récemment WebRTC. Mais même sous Android 4.x, il n'y a pas une uniformité. Pour cela, il a utilisé "crosswalk" (qui fonctionne désormais sous iOS aussi) et qui permet d'activer WebRTC. En revanche, cela demande de créer des applications hybrides. Pour des applications Web mobiles, il faut toujours utiliser des versions récentes d'Android.

Pour iOS, c'est encore pire: nous ne pouvons passer que par une application hybride. Mais en plus, le plugin "phare" permettant de faire cela est plutôt compliqué et à des effets de bords: iosRTC. Car il semblerait que ce plugin place au dessus de la zone où est censé s'afficher la vidéo via WebRTC est un composant natif. Cela implique une taille figée, une position maîtrisée, etc ...


Face à tout cela, il a décidé de nous aider en nous fournissant une API "rtc-everywhere".



Ce dernier fonctionne simplement, et est disponible pour:
  • Les navigateurs
    • Chrome
    • Firefox
    • Safari 7+
    • Internet Explorer 9+
    • Edge

  • Les mobiles
    • Android 4+ et 5+
    • iOS

  • Et aussi NodeJs


Et pour illustrer ça, il a fait un petit site qui l'utilise: http://cachemonet.com/



Nous pouvons donc lui dire merci de ce grand retour d'expérience, mais aussi de son framework :)

Commentaires

Posts les plus consultés de ce blog

ISO: liens & outils utiles

NodeJs et SSL: une petite analyse

Créer sa commande slack en quelques minutes