Je suppose que WebRTC est une API qui décode/encode l'audio et la vidéo, bien que la communication entre le serveur et les clients se fasse via des sockets web, ou un autre protocole réseau ? Je suis un peu perdu. Le WebRTC dispose-t-il de son propre protocole de communication ?
Réponses
Trop de publicités?Le WebRTC a deux facettes.
- APIs JavaScript (
getUserMedia
) qui permettent à une application d'accéder au matériel de la caméra et du microphone. Vous pouvez utiliser cet accès pour afficher simplement le flux en local (peut-être appliquer les effets ), ou envoyer le flux sur le réseau. Vous pouvez envoyer les données vers votre serveur, ou vous pouvez utiliser... -
PeerConnection
une API qui permet aux navigateurs d'établir poste-à-poste direct les connexions de prises. Vous pouvez établir une connexion directe avec le navigateur d'un autre utilisateur et échanger des données directement. C'est très utile pour les données à large bande passante comme la vidéo, où vous ne voulez pas que votre serveur ait à relayer de grandes quantités de données.
Jetez un coup d'œil à les démos pour voir les deux parties du WebRTC en action.
Donc, en résumé :
- Les WebSockets permettent une communication en duplex intégral entre un navigateur et un serveur web.
- WebRTC
PeerConnection
permet une communication full-duplex entre deux navigateurs.
Au lieu de peerConnection
vous pouvez également consulter le projet de canal de données WebRTC : https://datatracker.ietf.org/doc/html/draft-jesup-rtcweb-data-protocol-00 qui est en fait un udp bidirectionnel. Ce qui peut être une alternative très intéressante aux WebSockets car il n'y a pas les côtés "négatifs" d'une connexion tcp.
Non, la signalisation n'est pas définie par le WebRTC.
Voici un article de l'IETF qui explique assez bien pourquoi ce n'est pas le cas : http://www.ietf.org/mail-archive/web/rtcweb/current/msg01143.html
Cela signifie que vous êtes libre de choisir la manière dont vous échangez les informations du réseau. Vous pouvez utiliser les websockets, le HTTP et même le courrier électronique, mais ce serait un peu difficile :)