WebRTC Trickle ICE с TURN со связями через интернет - PullRequest
0 голосов
/ 25 октября 2019

Я не могу сформировать соединение WebRTC между браузерами, использующими два отдельных общедоступных IP-адреса, которые находятся за NAT (то есть регулярно через Интернет), которые не позволяют подключаться только с использованием информации STUN и вместо этого требуют помощи сервера TURN.

У меня уже был успех в формировании соединений в локальной сети, но до сих пор я не сталкивался с ЛЮБЫМИ инструкциями о том, как создать простое соединение на основе TURN с javascript webrtc. Кажется, что все учебники счастливы, когда они получают sdp типа «тип реле» и заканчивают на этом. Я также получил sdp "typ relay" от моего компьютера, однако у меня никогда не было ICE для подключения через TURN через Интернет, и я не нашел никаких инструкций, которые бы давали инструкции по этому случаю (который, по моему мнению, должен быть довольно типичным).

Мои лучшие попытки, согласно Firefox: about: webrtc -page предоставили мне усилия по подключению ICE, где как удаленные, так и локальные кандидаты в необработанные соединения ICE являются адресами ретранслятора с корректным общедоступным IP-адресом сервера TURN и портом UDP. Однако это ICE-соединение не работает по неизвестной мне причине.

Кроме того, я попытался найти все мистические требования безопасности, связанные с сервером TURN, однако я не уверен, какой именно уровень настроек требуется для Chrome. или Firefox. Моя текущая конфигурация Coturn выглядит следующим образом:

external-ip=13.X.X.X/172.X.X.X
listening-port=3478
log-file=stdout
lt-cred-mech
max-port=36980
min-port=36940
fingerprint
no-cli
realm=example.com
user=usernamehere:passwordhere
verbose
cert=/etc/letsencrypt/live/example.com/cert.pem
pkey=/etc/letsencrypt/live/example.com/privkey.pem
no-sslv2
no-sslv3

Я хотел бы увидеть учебник или инструкции, в которых кто-то создал простой код, который фактически используется для передачи данных через Интернет с использованием серверов webrtc и TURN. До сих пор я нашел примеры только с одним и тем же браузером, используя веб-сокеты или успех с информацией о STUN.

Просто успешное создание формы подключения ICE сделает мой день.

РЕДАКТИРОВАТЬ: Получается (каламбурнамеревался), что мой метод сигнализации был слишком медленным. Чтобы использовать ретрансляционный сервер TURN на основе UDP, вам нужно доставить кандидатов быстрее, чем мой метод сигнализации (человеческая копия на другую вкладку). Веб-сокеты обеспечивают способ доставки информации о сигнале достаточно быстро.

1 Ответ

0 голосов
/ 25 октября 2019

Обычно вы можете просто добавить свои TURN-учетные данные здесь:

config: {
 'iceServers': [
     { url: 'stun:stun.l.google.com:19302' },
     {
         url: 'turn:domain:port',
         credential: 'password',
         username: 'username'
    }
 ]
}

Я всегда использую следующие TURN-config:

listening-port=80
listening-ip=internalIP //can be empty
relay-ip=intermalIP //can be empty
external-ip=publicIP
realm=yourDomain
server-name=yourDomain
lt-cred-mech
user=User:Pass
...