Реализация нашего собственного сервера STUN/TURN для приложения WebRTC
Я работаю над приложением webrtc и должен реализовать следующий сервер TURN.
https://code.google.com/p/rfc5766-turn-server/
Я следую этому уроку.
http://www.dialogic.com/den/developer_forums/f/71/t/10238.aspx
и он говорит ссылаться на сервер TURN следующим образом, в коде javascript, где создается RTCPeerConnection.
var pc_config = {"iceServers": [{"url": "stun:stun.l.google.com:19302"},
{"url":"turn:my_username@<turn_server_ip_address>", "credential":"my_password"}]};
pc_new = new webkitRTCPeerConnection(pc_config);
Я немного запутался, почему мы ссылаемся на общедоступный сервер Google STUN. Я думал, что сервер RFC5766 TURN имеет STUN внутри.
RFC5766 только сервер TURN? а не STUN сервер? Разве мы не можем реализовать свой собственный сервер STUN, а не использовать один из предоставленных Google?
Извините за такой наивный вопрос. Я новичок в WebRTC.
Благодарю.
2 ответа
TURN это расширение STUN, поэтому сервер TURN также имеет функции STUN.
https://code.google.com/p/rfc5766-turn-server/ также работает как STUN, поэтому вы можете попробовать написать что-то вроде этого:
var pc_config = {"iceServers": [{"url":"turn:my_username@<turn_server_ip_address>", "credential":"my_password"}]};
pc_new = new webkitRTCPeerConnection(pc_config);
Просто добавив в ответ Игоря,
coturn
это вилка rfc5766-turn-server
основные функции одинаковы, с дополнительными функциями и добавлением новых функций, поэтому я бы посоветовал вам использовать его вместо.
по словам самого автора:
Этот проект возник из проекта rfc5766-turn-server ( https://code.google.com/p/rfc5766-turn-server/). Есть много новых расширенных спецификаций TURN, которые выходят далеко за рамки оригинального документа RFC 5766. Этот проект принимает код rfc5766-turn-server как стартер и добавляет к нему новые расширенные функции.
Что касается установки, то ее легко установить на машины с Linux, не пробуя в других ОС.
простой способ:
sudo apt-get install coturn
Если вы скажете "нет", я хочу использовать новейшие технологии, вы можете загрузить исходный код со страницы загрузки и установить его самостоятельно, например:
sudo -i # ignore if you already in admin mode
apt-get update && apt-get install libssl-dev libevent-dev libhiredis-dev make -y # install the dependencies
wget -O turn.tar.gz http://turnserver.open-sys.org/downloads/v4.5.0.6/turnserver-4.5.0.6.tar.gz # Download the source tar
tar -zxvf turn.tar.gz # unzip
cd turnserver-*
./configure
make && make install
для запуска TURN рекомендуется запускать его как демон, и вы можете использовать эту вики для справки по его настройке.
Пример команды для запуска сервера TURN:
sudo turnserver -a -o -v -n --no-dtls --no-tls -u test:test -r "someRealm"
описание команды:
- -a - Использовать механизм долгосрочных учетных данных
- -o - запустить серверный процесс как демон
- -v - "Умеренный" подробный режим.
- -n - нет файла конфигурации
- --no-dtls - не запускать прослушиватели DTLS
- --no-tls - не запускать слушателей TLS
- -u - учетные данные пользователя, которые будут использоваться
- -r - область по умолчанию для использования, требуется TURN REST API
Теперь вы можете использовать сервер TURN в вашем приложении WebRTC как:
var peerConnectionConfig = {
iceServers: [{
urls: YOUR_IP:3478,
username: 'test',
password: 'test'
}]
}
Недавно я перехватывал пакеты своего сервера Kurento WebRTC и понял, что он использует этот www.stunprotocol.org
домен для STUN-запросов. Инструмент под названиемstuntman
может создать для вас простой STUN-сервер.
Просто выполните следующие действия на хосте Linux:
1.sudo apt-get update
2.sudo apt-get install stuntman-server
3.stunserver --mode full --primaryinterface 100.101.102.103
(который должен быть заменен 100.101.102.103 на ваш IP-адрес)
4. Откройте эту ссылку, чтобы протестировать свой STUN-сервер.
например, STUN или TURN URI: stun:100.101.102.103:3478
У меня все идет хорошо.