WebRTC vs WebSocket

Deux moyens de communiquer avec le serveur, que représentent-ils et quelle est la différence?

WebRTC veut permettre la communication en temps réel entre le navigateur et le serveur et entre navigateurs. RTC signifie Real-Time Communication. L'API Web qui permet de l'utiliser dans une application est l'objet d'un standard du W3C qui décrit l'interface des objets impliqués dans une telle communication.

Il est clair que Microsoft veut investir dans ce genre de technologie (en se basant sur ses recrutements) et qu'elle sera intégrée à Skype, le service de téléphonie gratuit par ordinateur, ce qui est le cas aussi de Google Talk. Microsoft n'a pas implémenté WebRTC sous le prétexte que le code VP8 qu'il utilise pourrait incorporer des brevets. Un accord récent (mars 2013) avec MPEG-LA qui les détient supprime cet obstacle.

WebRTC est supporté par Google et utilise donc le codec VP8 pour les vidéos. Google demande à ce que ce codec devienne le standard pour WebRTC et que le codec Opus devienne le standard audio. Tous deux sont libres de brevets. Ils sont déjà utilisés par Skype, entre autres codecs.
In novembre 2014, le groupe de travail RTCWEB a décidé que VP8 et H264 sont tous deux obligatoires dans WebRTC. Les navigateurs devront donc implémenter les deux codecs.

Différence avec WebSocket

WebSocket, qui est aussi défini par l'IETF et le W3C est un protocole de communication bidirectionnel ente le serveur et le navigateur. Le standard W3C décrit l'API pour l'utiliser dans une application. WebRTC est un protocole bidirectionnel en temps réel pour images et son entre navigateurs ou serveurs.

Dans les deux cas on a une interface utilisable en JavaScript par les webmasters, et un protocole de communication interne qui est utilisé par les auteurs de navigateurs. Le second protocole peut être utilisé par le premier.
WebRTC décrit effectivement deux API, l'une la Web API qui est décrite par le standard du W3C, est tout ce qui intéresse les webmasters. L'autre l'API en C++ qui permet de se relier aux services multimédia en backend, est utilisée par les créateurs de navigateurs et autres logiciels.

Voici le schéma des différentes couches de l'interface WebRTC:

WebRTC

L'API Web de WebRTC est un remplacement à Ajax comme WebSocket remplace l'objet XMLHttpRequest du navigateur. On se situe cependant à un tout autre niveau avec un accès bidirectionnel en temps réel, sans aucune attente du serveur. Il faut encore que ce dernier puisse supporter une telle charge, ce pourquoi ce système se destine plutôt à faire fonctionner une application sur un serveur dédié. Mais la possibilité de faire communiquer des navigateurs distants offre de nouveaux horizons aux créateurs d'applications.

Object RTC

En octobre 2014, Microsoft a annonce qu'Internet Explorer allait supporter ORTC. Il s'agit d'une API JavaScript étendue basée sur RTC. C'était une décision difficile pour Microsoft, car donner au navigateurs la possibilité de communiquer vocalement et visuellement rend des services comme Skype inutile (elle l'a racheté en 2011 pour 8.5 milliards de dollars), ou tout au moins facilite la création de concurrents, mais c'était indispensable pour rester au niveau de Firefox et Chrome.

Documents et code