291 votes

WebRTC vs Websockets : si WebRTC peut faire vidéo, Audio et données, pourquoi ai-je besoin de Websockets ?

Donc, je cherche à construire une application de chat qui permettra vidéo, audio et texte. J'ai passé quelques temps à la recherche dans les Websockets et WebRTC de décider de les utiliser. Car il existe de nombreuses applications audio et vidéo avec WebRTC, cela sonne comme un choix raisonnable, mais existe-il d'autres choses que je devrais envisager? N'hésitez pas à partager vos pensées.

Des choses comme:

  • En raison de la nouvelle WebRTC n'est disponible que sur certains navigateurs, tandis que les websockets semble être de plus en plus de navigateurs. J'ai posté une question sur ce sujet auparavant.

-Évolutivité - Websockets utilise un serveur pour la session et WebRTC semble être p2p

-Multiplexage/plusieurs salons de chat - Google+ Hangouts, et je suis toujours en mode démo des applications sur la façon de mettre en œuvre

-Serveur - Websockets besoins RedisSessionStore ou RabbitMQ à l'échelle sur plusieurs machines

354voto

Sam Dutton Points 4638

WebRTC est conçu pour la haute performance, de haute qualité de la communication de la vidéo, de l'audio et des données arbitraires. En d'autres termes, pour les applications exactement comme ce que vous décrivez.

WebRTC des applications ont besoin d'un service à travers lequel ils peuvent échanger en réseau et les médias de métadonnées, un processus connu sous le nom de signalisation. Cependant, une fois que la signalisation a eu lieu, vidéo/audio/données sont transférées directement entre les clients, en évitant le coût de la diffusion par l'intermédiaire d'un serveur.

WebSocket sur l'autre main est conçu pour la communication bi-directionnelle entre le client et le serveur. Il est possible de diffuser de l'audio et de la vidéo sur WebSocket (voir ici par exemple), mais la technologie et les Api ne sont pas intrinsèquement conçu pour efficace, robuste streaming en la manière que WebRTC est.

D'autres réponses ont dit, WebSocket (ou cadres qui l'utilisent comme Support.io) peut être un bon choix pour la signalisation.

Je maintiens une liste de WebRTC ressources: vous recommandons fortement de commencer par regarder les 2013 Google I/O présentation sur WebRTC.

82voto

kanaka Points 23143

Les WebSockets:

  • Ratifié norme IETF (6455) avec le soutien sur tous les navigateurs modernes et même les anciens navigateurs à l'aide de web-socket-js polyfill.

  • Utilise HTTP compatibles poignée de main et les ports par défaut qui rend beaucoup plus facile à utiliser avec pare-feu, proxy et le serveur web de l'infrastructure.

  • Beaucoup plus simple navigateur API. Essentiellement, un constructeur avec un couple de rappels.

  • Client/navigateur au serveur uniquement.

  • Prend uniquement en charge fiable, dans l'ordre de transport car il est construit Sur le protocole TCP. Cela signifie paquet gouttes peuvent retarder les paquets suivants.

WebRTC:

  • Commence tout juste à être pris en charge par Chrome et Firefox. MS a proposé une incompatibilité de variante. Le DataChannel composant n'est pas encore compatible entre Firefox et Chrome.

  • WebRTC est un navigateur à l'autre dans des circonstances idéales, mais même alors, presque toujours besoin d'un serveur signalisation pour configurer les connexions. Le plus commun de signalisation des solutions de serveur de droite maintenant utiliser les WebSockets.

  • La couche Transport est configurable avec application en mesure de choisir si la connexion est dans l'ordre et/ou fiable.

  • Complexes et multiples navigateur de l'API. Il y a des libs JS pour fournir une API simple mais ils sont jeunes et en pleine évolution (tout comme WebRTC lui-même).

46voto

Mikael Holmgren Points 560

webRTC ou les websockets? Pourquoi ne pas utiliser les deux.

Lors de la construction d'un vidéo/audio/texte de chat, webRTC est certainement un bon choix car il utilise le peer to peer de la technologie et une fois que la connexion est en place et en cours d'exécution, vous n'avez pas besoin de passer de la communication par l'intermédiaire d'un serveur (à moins d'utiliser de TOUR).

Lors de la configuration du webRTC communication que vous devez faire intervenir une sorte de mécanisme de signalisation. Les Websockets pourrait être un bon choix ici, mais webRTC est le chemin à parcourir pour la vidéo/audio/info texte. Salles de Chat est accompli dans la signalisation.

Mais, comme vous le mentionnez, chaque navigateur prend en charge webRTC, de sorte que les websockets peut parfois être une bonne solution de repli pour les navigateurs.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X