web-dev-qa-db-fra.com

WebRTC et Websockets. Y a-t-il une différence

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 confus. WebRTC a-t-il son propre protocole de communication?

50
AndrewMcLagan

WebRTC a deux côtés.

  1. API 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 localement (peut-être appliquer des effets ), ou envoyer le flux sur le réseau. Vous pouvez envoyer les données à votre serveur ou utiliser ...
  2. PeerConnection, une API qui permet aux navigateurs d'établir des connexions socket peer-to-peer directes. Vous pouvez établir une connexion directement avec le navigateur de quelqu'un d'autre et échanger des données directement. Ceci est très utile pour les données à large bande passante comme la vidéo, où vous ne voulez pas que votre serveur doive gérer le relais de grandes quantités de données.

Jetez un œil à les démos pour voir les deux parties de WebRTC en action.

Donc en bref:

  • Les WebSockets permettent une communication en duplex intégral entre un navigateur et un serveur Web.
  • PeerConnection de WebRTC permet une communication en duplex intégral entre deux navigateurs.
83
josh3736

WebRTC utilise RTP (un protocole basé sur UDP) pour le transport multimédia, mais nécessite un canal de signalisation hors bande pour configurer la communication. Une option pour le canal de signalisation est WebSocket.

13
oberstet

Au lieu de peerConnection, vous pouvez également consulter le brouillon du canal de données WebRTC: http://tools.ietf.org/html/draft-jesup-rtcweb-data-protocol- qui est essentiellement udp bidirectionnel. Ce qui peut être une alternative très utile aux WebSockets car il n'a pas les côtés "négatifs" d'une connexion TCP.

4
3rdEden

Non, la signalisation n'est pas définie par 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 façon dont vous échangez les informations réseau. C'est à dire. vous pourriez utiliser des websockets, HTTP et même e-mail, mais ce serait un peu difficile :)

2
Felix Hagspiel