2017-03-01 3 views
0

私は1つのビデオ通話アプリケーションを開発しています。現在、Xirsysのスタンとターンサーバーを使用しています。私は構成としてhttps://service.xirsys.com/iceの結果を使用しています。 Javascriptページなどで使用する正しいユーザー名と資格情報ですか?それが間違っている場合は、適切なIceServers値を取得する場所を教えてください。 iceServers = [ { "url": "stun:turn01.uswest.xirsys.com" }, { "username": "0xxxxxx8-fxxc-1xx6-bxxb-bxxxxxxxxxx8", "url": "turn:turn01.uswest.xirsys.com:80?transport=udp", "credential": "0xxxxxxe-fxxc-1xx6-axx0-axxxxxxxxxx9" }, { "username": "0xxxxxx8-fxxc-1xx6-bxxb-bxxxxxxxxxx8", "url": "turn:turn01.uswest.xirsys.com:3478?transport=udp", "credential": "0xxxxxxe-fxxc-1xx6-axx0-axxxxxxxxxx9" }, { "username": "0xxxxxx8-fxxc-1xx6-bxxb-bxxxxxxxxxx8", "url": "turn:turn01.uswest.xirsys.com:80?transport=tcp", "credential": "0xxxxxxe-fxxc-1xx6-axx0-axxxxxxxxxx9" }, { "username": "0xxxxxx8-fxxc-1xx6-bxxb-bxxxxxxxxxx8", "url": "turn:turn01.uswest.xirsys.com:3478?transport=tcp", "credential": "0xxxxxxe-fxxc-1xx6-axx0-axxxxxxxxxx9" }, { "username": "0xxxxxx8-fxxc-1xx6-bxxb-bxxxxxxxxxx8", "url": "turns:turn01.uswest.xirsys.com:443?transport=tcp", "credential": "0xxxxxxe-fxxc-1xx6-axx0-axxxxxxxxxx9" }, { "username": "0xxxxxx8-fxxc-1xx6-bxxb-bxxxxxxxxxx8", "url": "turns:turn01.uswest.xirsys.com:5349?transport=tcp", "credential": "0xxxxxxe-fxxc-1xx6-axx0-axxxxxxxxxx9" } ];
注:同じネットワークでは動作しますが、異なるネットワークでは動作しません。別のネットワークでも、私はincommingコールを得ることができますが、呼び出しを受け取った後で、iceConnectionStateは失敗します。
私は同じような質問hereを出しました。ここでは、麻痺を麻痺患者とターンサーバとして使用していました。Xirsys iceConnectionStatusが失敗しました

ありがとうございます。

答えて

2

ICR文字列は、WebRTCアプリケーションのアイス構成で「そのまま」使用する必要があります。ただし、ICE資格情報は30秒間有効です。各接続の直前に新しいICE文字列を要求する必要があります。

NAT変換でTURN/STUNが使用されないため、ローカルネットワーク接続は有効なICE文字列なしで機能します。これは、NATがローカルIP自体を変換するためです。したがって、ローカルネットワーク接続は常に機能します(非共通のNAT状況がない限り)。各コールの前にICE資格情報をリフレッシュせずに使用していた場合は、外部接続が失敗した(または確かに問題に寄与する)原因になります。

リー

+0

ありがとう!私の問題のこの明瞭な説明のために。私はもう一つ疑いがある。私は電話する前に新鮮な氷の文字列を要求することができます。しかし、私は受信側で同じことが必要ですか?または、サーバー側で構成できる他の方法があります(ピアサーバ)。詳しく教えてください。 もう一度ありがとうございます。 – Amrendra

+0

あなたの提案通りにコードを修正しました。これで、発信者側でコールを開始する直前に氷の文字列が取得されます。受信側では、no configプロパティが設定されていません。しかし、まだ問題が存在します。氷の文字列を_config:{data.d} _として提供しています。 – Amrendra

+0

ICE文字列は、クライアント(発信者)によって(シグナリング経由で共有されるため)必要です。あなたは、あなたがやっているように見えるdata.dの値を渡す必要があります。 chrome:// webrtc-internalsのダンプを提供できますか?これは、TURN/STUNサーバーが使用されていることを示し、アプリにICE文字列が正しく入力されていない場合、または問題が他の場所にある場合にはうまくいきません。 –

関連する問題