2012-10-05 5 views
47

Suppongo che WebRTC sia un'API che decodifica/codifica audio e video, sebbene la comunicazione tra il server e i client avvenga tramite socket Web o qualche altro protocollo di rete? Sono un po 'confuso. WebRTC ha il proprio protocollo di comunicazione?WebRTC e Websockets. C'è una differenza

risposta

81

Ci sono due lati di WebRTC.

  1. API JavaScript (getUserMedia) che consentono a un'app di accedere all'hardware della videocamera e del microfono. È possibile utilizzare questo accesso per visualizzare semplicemente il flusso localmente (ad esempio applying effects) o inviare lo streaming sulla rete. È possibile inviare i dati al proprio server oppure è possibile utilizzare ...
  2. PeerConnection, un'API che consente ai browser di stabilire connessioni socket socket dirette peer-to-peer. È possibile stabilire una connessione direttamente al browser di qualcun altro e scambiare i dati direttamente. Questo è molto utile per dati ad alta larghezza di banda come video, in cui non si desidera che il server debba gestire l'inoltro di grandi quantità di dati.

Dai uno sguardo allo the demos per vedere entrambe le parti di WebRTC in azione.

Quindi, in poche parole:

  • WebSockets consentire la comunicazione full-duplex tra un browser e un server web.
  • WebRTC PeerConnection consente la comunicazione full duplex tra due browser.
+2

WOW ... grazie per la risposta forse più concisa che potessi mai aspettarti. * Quindi PeerConnection è una connessione P2P, la fase di handshaking richiede un server nel mix? è un server richiesto per una delle API di PeerConnection? – AndrewMcLagan

+7

'la fase di handshaking richiede un server nel mix?' Sì. WebRTC è stato implementato utilizzando l'architettura JSEP, il che significa che l'individuazione e la segnalazione degli utenti avvengono tramite un canale di comunicazione separato (ad esempio, utilizzando WebSocket o XHR e l'API DataChannel). Vedere l'esempio http://apprtc.appspot.com o (scuse per l'auto promozione) http://www.html5rocks.com/en/tutorials/webrtc/basics/#toc-signalling –

+1

@ josh3736 Quando si dice "peer diretto -to-peer socket "e" full-duplex communication "significa che qualcuno ha costruito una soluzione affidabile, ordinata da pacchetti e controllata da errori in cima al protocollo UDP per la comunicazione P2P (non TCP, ma qualcosa del genere)?Ho l'impressione che WebRTC non supporti le connessioni TCP P2P. –

12

WebRTC utilizza RTP (un protocollo basato su UDP) per il trasporto dei supporti, ma richiede un canale di segnalazione fuori banda per impostare la comunicazione. Un'opzione per il canale di segnalazione è WebSocket.

3

Invece di peerConnection è anche possibile consultare la bozza del canale di dati WebRTC: http://tools.ietf.org/html/draft-jesup-rtcweb-data-protocol-00 che è essenzialmente udp bidirezionale. Quale può essere un'alternativa davvero valida a WebSockets in quanto non ha i lati "negativi" di una connessione TCP.

+0

è implementato da qualsiasi browser? C'è un esempio? – appsthatmatter

+0

@ jjoe64 peerConnection è già implementato in Chrome e FireFox Esempio: http://mozilla.github.com/webrtc-landing/ – spicyramen

+1

necessario per una connessione tra il browser e il server (node.js). Not p2p – appsthatmatter

2

No, la segnalazione non è definita da WebRTC.

Ecco un post da parte della IETF che spiega abbastanza bene il motivo per cui non è: http://www.ietf.org/mail-archive/web/rtcweb/current/msg01143.html

Ciò significa che sei libero di scegliere come si scambiano informazioni sulla rete. Cioè potresti usare websocket, HTTP e persino Email, ma sarebbe un po 'difficile :)