web-dev-qa-db-ja.com

WebRTCアプリケーション用に独自のSTUN / TURNサーバーを実装する

私はwebrtcアプリケーションに取り組んでおり、次のTURNサーバーを実装する必要があります。

https://code.google.com/p/rfc5766-turn-server/

このチュートリアルに従っています。

http://www.dialogic.com/den/developer_forums/f/71/t/10238.aspx

そして、RTCPeerConnectionが作成されるjavascriptコードで、次のようにTURNサーバーを参照するように指示しています。

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

私は少し混乱していますが、なぜGoogleのパブリックSTUNサーバーを参照しているのですか。 RFC5766 TURNサーバーの内部にはSTUNがあると思いました。

RFC5766はTURNサーバーのみですか?とSTUNサーバー? Googleが提供するサーバーを使用して、独自のSTUNサーバーを実装することはできませんか?

そのような素朴な質問でごめんなさい。私はWebRTCが初めてです。

ありがとう。

27
Sam Fast

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

イゴールの答えに加えて、

coturnrfc5766-turn-serverのフォークであり、コア機能は同じですが、追加機能があり、新しい機能が追加されているため、代わりに使用することをお勧めします。

著者自身の言葉で:

このプロジェクトは、rfc5766-turn-serverプロジェクト( https://code.google.com/p/rfc5766-turn-server/ )から発展したものです。元のRFC 5766文書をはるかに超える新しい高度なTURN仕様が多数あります。このプロジェクトでは、rfc5766-turn-serverのコードをスターターとして使用し、新しい高度な機能を追加します。

インストールに関しては、Linuxマシンへのインストールは簡単であり、他のOSでは試されません。

簡単な方法:

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-使用するデフォルトのレルム、TURN REST APIの必要性

これで、WebRTCアプリケーションでTURNサーバーを次のように使用できます。

var peerConnectionConfig = {
  iceServers: [{
    urls: YOUR_IP:3478,
    username: 'test',
    password: 'test'
  }]
}
35
mido