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

Je suppose que WebRTC est une API qui décode / code audio et 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. Est-ce que WebRTC possède son propre protocole de communication?

Il y a deux côtés de WebRTC.

  1. Les API JavaScript ( getUserMedia ) qui permettent à une application d'accéder au matériel de caméra et de microphone. Vous pouvez utiliser cet accès pour afficher simplement le flux localement (peut-être en appliquant des effets ) ou envoyer le flux sur le réseau. Vous pouvez envoyer les données à votre serveur, ou vous pouvez utiliser …
  2. PeerConnection , une API qui permet aux navigateurs d'établir des connexions directes peer-to-peer . 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 ait affaire à la transmission de grandes quantités de données.

Regardez les démos pour voir les deux parties de WebRTC en action.

Donc en un mot:

  • WebSockets permet une communication full-duplex entre un navigateur et un serveur Web.
  • Le PeerConnection de WebRTC permet une communication full-duplex entre deux navigateurs.

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.

Au lieu de peerConnection vous pouvez également consulter le projet de la chaîne de données WebRTC: http://tools.ietf.org/html/draft-jesup-rtcweb-data-protocol-00 qui est essentiellement bidirectionnel udp. Ce qui peut être une alternative vraiment précieuse à WebSockets car il n'a pas les côtés "négatifs" d'une connexion tcp.

Non, la signalisation n'est pas définie par WebRTC.

Voici une publication de l'IETF qui l'explique très bien pourquoi ce n'est pas: 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 des informations sur le réseau. C'est-à-dire que vous pouvez utiliser des websockets, HTTP et même Email, mais ce serait un peu difficile 🙂