Serwer TURN

Większość aplikacji WebRTC wymaga serwera do przekazywania ruchu między peerami, ponieważ bezpośrednie połączenie socketowe między klientami często nie jest możliwe (chyba że znajdują się w tej samej sieci lokalnej). Typowym sposobem rozwiązania tego problemu jest użycie serwera TURN. Termin ten oznacza Traversal Using Relays around NAT (przejście przez NAT za pomocą przekaźników) i jest protokołem do przekazywania ruchu sieciowego.

Obecnie w internecie dostępnych jest kilka opcji serwerów TURN, zarówno w postaci hostowanych samodzielnie aplikacji (takich jak projekt COTURN w wersji open source), jak i usług w chmurze.

Gdy masz już dostępny w internecie serwer TURN, wystarczy, że aplikacja kliencka będzie miała prawidłowy adres RTCConfiguration. Poniższy fragment kodu przedstawia przykładową konfigurację RTCPeerConnection, w której serwer TURN ma nazwę hosta my-turn-server.mycompany.com i działa na porcie 19403. Obiekt konfiguracji obsługuje też właściwości username i credential, które służą do zabezpieczenia dostępu do serwera. Są one wymagane podczas łączenia się z serwerem TURN.

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

const peerConnection = new RTCPeerConnection(iceConfiguration);