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);