Vai al contenuto

WebRTC: If it’s P2P, why do I need a server?

Al SFHTML5 Tutto su WebRTC Al MeetUp di inizio settimana (nella foto, il nostro CEO Ben Strong che parla all'evento), una domanda continuava a ripresentarsi: se WebRTC è peer-to-peer, perché sono necessari i server STUN e TURN?

WebRTC deve funzionare 100% volte

WebRTC può essere la terra promessa della comunicazione. Cosa c'è di meglio di connessioni video, audio e dati peer-to-peer basate su codice open source?

Molti sviluppatori hanno creato applicazioni WebRTC senza server STUN o TURN. E funzionano bene. Nella maggior parte dei casi. È quel "resto del tempo" che fa riflettere. A meno che non si abbia la certezza che la propria soluzione WebRTC funzioni in TUTTE le situazioni, è difficile considerarla il sistema di riferimento.

È qui che entrano in gioco i server.

Devi connetterti tra reti diverse? Ti servirà un server.

WebRTC funziona egregiamente quando si connettono browser all'interno della stessa rete locale. Ma non appena si inizia a connettersi al di fuori della propria rete, ad esempio attraverso un firewall aziendale, sarà necessario un po' più di, beh, potenza di fuoco.

Le configurazioni del firewall non consentono l'accesso a WebRTC senza l'utilizzo del protocollo STUN (Session Traversal Utilities for NAT) o TURN (Traversal Using Relays around NAT). Ecco perché è necessario un server.

STUN tenta di aprire una falla nel firewall per consentire il passaggio della chiamata. Questo protocollo funziona spesso. Se si stabilisce una connessione tramite STUN, si crea una connessione peer-to-peer. Questo è un grande vantaggio perché una connessione basata su STUN non richiede un utilizzo intensivo della CPU o della rete da parte del server.

Quando STUN non è sufficiente, è necessario il protocollo TURN. Con TURN, la connessione viene inoltrata tramite il server e non è peer-to-peer. La connessione inoltrata utilizza sia la rete che la potenza di elaborazione del server, il che limita il numero di connessioni che un singolo server può gestire contemporaneamente. (E se hai bisogno di molte connessioni, avrai bisogno di molti server.)

Come fa il sistema a determinare ciò che è necessario?

ICE è il protocollo utilizzato per determinare quale percorso utilizzare, dal meno complesso: l'host, utilizzato quando la connessione WebRTC si trova sulla stessa rete locale, fino a quelli progressivamente più complessi: i protocolli STUN e TURN, entrambi i quali richiedono la presenza di server.

Ok, quindi ho bisogno di un server. E adesso?

Se hai deciso di utilizzare WebRTC e l'affidabilità del protocollo 100% è ciò di cui hai bisogno, ti trovi nel campo dei server.

Quali sono gli aspetti importanti da considerare quando si pensa ai server? Riteniamo che dobbiate avere tre priorità:  

  1. Latenza
  2. Backup e ridondanza
  3. Bilanciamento del carico (rete e CPU)

Esistono diverse strade per costruire la tua infrastruttura server. La scelta di quella più adatta a te dipende dalle tue competenze di sviluppo, dal tempo a disposizione e dal budget.

Opzione uno: AWS. Molti dettagli sull'utilizzo di AWS, comprese alcune implicazioni sui prezzi, sono descritti nel nostro post di giugno, Tunneling WebRTC su TCP (e perché è importante). Un aspetto importante da notare riguardo ad AWS è la possibilità di selezionare le proprie priorità in termini di latenza e ridondanza.

Opzione due: Server TURN open source. (Un esempio può essere trovato Qui.Molti puristi, determinati a costruire la propria soluzione, prenderanno in considerazione questa strada. Il vostro compito sarà quello di far funzionare i server in posizioni con bassa latenza per tutti gli utenti (distribuiti geograficamente) e di assicurarvi che tali server siano scalabili per gestire il carico.

Opzione tre: vLine per gli sviluppatori. Abbiamo dedicato oltre due anni esclusivamente alla creazione di una piattaforma WebRTC funzionante. 100% del tempo. Per coloro che desiderano aggiungere funzionalità basate su WebRTC al proprio sito, ma preferiscono concentrare le proprie risorse sul resto dell'attività, anziché stare al passo con il panorama WebRTC in rapida evoluzione.

Un modo rapido per farsi un'idea della qualità della nostra piattaforma è utilizzare Collegamento vLine, che si basa sulla stessa piattaforma globale che puoi utilizzare per la tua soluzione.

Siamo sempre lieti di rispondere alle vostre domande. Inviateci un'e-mail all'indirizzo [email protected] oppure trovaci @vlineinc.