2 台の異なるコンピューター、2 台の Chrome、2 つの異なるネットワーク。
上記の 2 つのピア間で WebRTC 呼び出しを行い、getStats()を使用して接続を確認しています。問題は、あるChromeでは「connection」プロパティに「 turn 」が表示され、別のChromeでは「 stun」が表示されることです。
それは可能ですか?私はあなたがどちらかを介して接続したと思いましたか?
2 台の異なるコンピューター、2 台の Chrome、2 つの異なるネットワーク。
上記の 2 つのピア間で WebRTC 呼び出しを行い、getStats()を使用して接続を確認しています。問題は、あるChromeでは「connection」プロパティに「 turn 」が表示され、別のChromeでは「 stun」が表示されることです。
それは可能ですか?私はあなたがどちらかを介して接続したと思いましたか?
はい、可能です。
最初のブラウザは、TURN サーバーによって取得された ICE 候補を使用します。2 番目のブラウザは、STUN によって取得された ICE 候補 (パブリック IP アドレスなど) を使用します。
実際、TURN サーバーは WebRTC フローをリモート TURN サーバーに中継する必要はありません。ピアが TURN を使用せずに離れた TURN サーバーに接続できる場合、通信には 1 つのリレー サーバーのみが使用されます。
ただし、 webapp"iceTransports": "relay"
の構成で次のオプションを使用して、両方のブラウザーで強制的に TURN サーバーを使用することができます。RTCPeerConnection
通常、両方のエンドでリレー候補が選択されることはまれなシナリオです。リレーの場合、ほとんどの場合、一方のエンドでリレー候補が、もう一方のエンドでサーバーリフレクシブ/ピアリフレクシブ候補になります。選択された再帰候補は、STUN またはピアツーピア候補として識別されますが、実際には中継接続です。元の接続タイプを検出する最善の方法は、両端の候補タイプを確認することです。