Реализация нашего собственного сервера 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:<turn_server_ip_address>", "username":"my_username", "credential":"my_password"}]};
pc_new = new webkitRTCPeerConnection(pc_config);
Я немного запутался, почему мы ссылаемся на общедоступный сервер STUN Google. Я думал, что сервер RFC5766 TURN имеет STUN внутри.
RFC5766 только сервер TURN? а не STUN сервер? Разве мы не можем реализовать свой собственный сервер STUN, а не использовать один из предоставленных Google?
Извините за такой наивный вопрос. Я новичок в WebRTC.
Благодарю.
Ответы
Ответ 1
Включите расширение STUN, поэтому сервер TURN также имеет функции STUN.
https://code.google.com/p/rfc5766-turn-server/ работает также как STUN, поэтому вы можете попытаться написать что-то вроде этого:
var pc_config = {"iceServers": [{"url":"turn:[email protected]<turn_server_ip_address>", "credential":"my_password"}]};
pc_new = new webkitRTCPeerConnection(pc_config);
Ответ 2
Просто добавив к Игорю ответ,
coturn
является fork 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, рекомендуется запустить его как демон, и вы можете использовать этот wiki для справки для его настройки.
пример команды для запуска сервера 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 - область по умолчанию для использования, требуется для API TURN REST
теперь вы можете использовать сервер TURN в своем приложении WebRTC следующим образом:
var peerConnectionConfig = {
iceServers: [{
urls: YOUR_IP:3478,
username: 'test',
password: 'test'
}]
}