Ich gehe davon aus, dass WebRTC eine API ist, die Audio und Video decodiert/codiert, obwohl die Kommunikation zwischen dem Server und den Clients über Web-Sockets oder ein anderes Netzwerkprotokoll erfolgt? Ich bin ein bisschen verwirrt. Verfügt WebRTC über ein eigenes Kommunikationsprotokoll?
WebRTC und Websockets. Ist da ein Unterschied
Andrew McLagan
josh3736
WebRTC hat zwei Seiten.
- JavaScript-APIs (
getUserMedia
), die einer App den Zugriff auf Kamera- und Mikrofonhardware ermöglichen. Sie können diesen Zugriff verwenden, um den Stream einfach lokal anzuzeigen (evtl Effekte anwenden) oder den Stream über das Netzwerk senden. Sie könnten die Daten an Ihren Server senden, oder Sie könnten… PeerConnection
eine API, die Browsern die Einrichtung ermöglicht direkter Peer-to-Peer Socket-Verbindungen. Sie können direkt eine Verbindung zu fremden Browsern aufbauen und direkt Daten austauschen. Dies ist sehr nützlich für Daten mit hoher Bandbreite wie Video, bei denen Sie nicht möchten, dass Ihr Server große Datenmengen weiterleiten muss.
Schauen Sie sich an die Demos um beide Teile von WebRTC in Aktion zu sehen.
Also in aller Kürze:
- WebSockets ermöglichen die Vollduplex-Kommunikation zwischen einem Browser und einem Webserver.
- WebRTCs
PeerConnection
ermöglicht die Vollduplex-Kommunikation zwischen zwei Browsern.
-
WOW … danke für die vielleicht prägnanteste Antwort, die ich je erwarten konnte. * PeerConnection ist also eine P2P-Verbindung, erfordert die Handshaking-Phase einen Server in der Mischung? Wird für eine der APIs von PeerConnection ein Server benötigt?
– Andrew McLagan
5. Oktober 2012 um 5:07 Uhr
-
‘Benötigt die Handshaking-Phase einen Server in der Mischung?’ Ja. WebRTC wurde mithilfe der JSEP-Architektur implementiert, was bedeutet, dass die Benutzererkennung und -signalisierung über einen separaten Kommunikationskanal erfolgt (z. B. mithilfe von WebSocket oder XHR und der DataChannel-API). Siehe die apprtc.appspot.com Beispiel oder (Entschuldigung für Eigenwerbung) html5rocks.com/en/tutorials/webrtc/basics/#toc-signalling
– Sam Dutton
12. Oktober 2012 um 9:18 Uhr
-
@ josh3736 Wenn Sie “direkter Peer-to-Peer-Socket” und “Vollduplex-Kommunikation” sagen, bedeutet das, dass jemand eine zuverlässige, paketgeordnete und fehlergeprüfte Lösung auf der Grundlage des UDP-Protokolls für die P2P-Kommunikation (nicht TCP , aber so ähnlich)? Ich habe den Eindruck, dass WebRTC keine P2P-TCP-Verbindungen unterstützt.
– Landon Poch
22. August 2014 um 18:25 Uhr
-
peerConnection kann ohne Browser verwendet werden. Es gibt native APIs für iOS und Android (und x86, glaube ich). Außerdem sind Audio und Video nicht das einzige, was webrtc tut, Sie können auch einen Datenkanal öffnen, um Dateien neben verschiedenen anderen kreativen Anwendungen Peer-to-Peer zu senden.
– Kevin
26. August 2014 um 5:47 Uhr
WebRTC verwendet RTP (ein UDP-basiertes Protokoll) für den Medientransport, erfordert jedoch einen Außerband-Signalisierungskanal, um die Kommunikation einzurichten. Eine Option für den Signalisierungskanal ist WebSocket.
3.Eden
Anstatt von peerConnection
Sie können sich auch den Entwurf des WebRTC-Datenkanals ansehen: https://datatracker.ietf.org/doc/html/draft-jesup-rtcweb-data-protocol-00 das ist im Grunde bidirektionales UDP. Das kann eine wirklich wertvolle Alternative zu WebSockets sein, da es nicht die “negativen” Seiten einer TCP-Verbindung hat.
-
wird dies von jedem Browser implementiert? Gibt es ein Beispiel?
– Apps, die wichtig sind
12. Oktober 2012 um 9:42 Uhr
-
@jjoe64 peerConnection ist bereits in Chrome und FireFox implementiert Beispiel hier: mozilla.github.com/webrtc-landing
– gogaska
21. November 2012 um 9:59 Uhr
-
Dazu muss eine Verbindung zwischen Browser und Server hergestellt werden (node.js). Nicht p2p
– Apps, die wichtig sind
22. November 2012 um 8:11 Uhr
-
Um eine Peer-to-Peer-Verbindung aufzubauen, müssen sich zunächst beide Peers „finden“. Dies geschieht über eine Signalisierung und optional über einen Stun/Turn-Server.
– Kevin
26. August 2014 um 5:50 Uhr
Nein, die Signalisierung wird nicht von WebRTC definiert.
Hier ist ein Beitrag der IETF, der ziemlich gut erklärt, warum dies nicht der Fall ist:
http://www.ietf.org/mail-archive/web/rtcweb/current/msg01143.html
Das bedeutet, dass Sie frei wählen können, wie Sie Netzwerkinformationen austauschen. Das heißt, Sie könnten Websockets, HTTP und sogar E-Mail verwenden, aber das wäre ein bisschen schwierig 🙂