Для работы большинства приложений WebRTC требуется сервер для ретрансляции трафика между одноранговыми узлами, поскольку прямой сокет часто невозможен между клиентами (если только они не находятся в одной локальной сети). Обычный способ решить эту проблему — использовать сервер TURN. Этот термин расшифровывается как Traversal Using Relays around NAT и представляет собой протокол для ретрансляции сетевого трафика.
В настоящее время существует несколько вариантов серверов TURN, доступных в Интернете, как в виде самостоятельных приложений (например, проект COTURN с открытым исходным кодом), так и в виде облачных сервисов.
Если у вас есть сервер TURN, доступный онлайн, все, что вам нужно, это правильная RTCConfiguration
для вашего клиентского приложения, чтобы использовать его. Следующий фрагмент кода иллюстрирует пример конфигурации для RTCPeerConnection
, где сервер TURN имеет имя хоста my-turn-server.mycompany.com
и работает на порту 19403
. Объект конфигурации также поддерживает свойства username
и credential
для защиты доступа к серверу. Они необходимы при подключении к серверу TURN.
const iceConfiguration = {
iceServers: [
{
urls: 'turn:my-turn-server.mycompany.com:19403',
username: 'optional-username',
credential: 'auth-token'
}
]
}
const peerConnection = new RTCPeerConnection(iceConfiguration);