Server TURN

Affinché la maggior parte delle applicazioni WebRTC funzioni, un server è necessario per inoltrare il traffico tra peer, dato che spesso non è possibile un socket diretto tra i client (a meno che non si trovino sulla stessa rete locale). Il modo più comune per risolvere questo problema è l'utilizzo di un server TURN. Il termine si riferisce a Traversal Using Relays intorno alla NAT ed è un protocollo per l'inoltro del traffico di rete.

Attualmente sono disponibili diverse opzioni per i server TURN disponibili online, sia come applicazioni self-hosted (come il progetto open source COturn) sia come servizi forniti nel cloud.

Quando disponi di un server turn online, ti serve soltanto il RTCConfiguration corretto per l'applicazione client. Lo snippet di codice riportato di seguito illustra una configurazione di esempio per un RTCPeerConnection in cui il server TURN ha il nome host my-turn-server.mycompany.com e viene eseguito sulla porta 19403. L'oggetto di configurazione supporta anche le proprietà username e credential per la protezione dell'accesso al server. Questi elementi sono necessari per la connessione a un server TURN.

const iceConfiguration = {
    iceServers: [
        {
            urls: 'turn:my-turn-server.mycompany.com:19403',
            username: 'optional-username',
            credential: 'auth-token'
        }
    ]
}

const peerConnection = new RTCPeerConnection(iceConfiguration);