web-dev-qa-db-ja.com

ice / stun / turnサーバーなしの隔離されたLAN上のWebRTC

分離されたLANで、DHCPサーバーによって割り当てられたIPアドレスを使用してWebRTC接続を確立する方法はありますか?

Node.jsとSocket.ioでこれを達成できることを理解していますが、限られたスキルセットでそのようなサーバーをセットアップすることを避けたいと本当に思っていました。私はプログラミングを少しでもやっている科学の教師なので、気軽にシンプルにしてください。ありがとうございました!

[〜#〜]更新[〜#〜]

アレックス、すべてのコンピューターが同じローカルネットワーク上にある場合は、STUNサーバーの使用を避けることができます。弾丸を噛んでラップトップにNode.jsをインストールする必要がありましたが、実際にはそれほど複雑ではありませんでした。次に、- これ と彼の GitHubファイル が見つかるまで、私にとってはうまくいかない一連の「実用例」を試しました。

Nodeでサーバースクリプトを実行した後、同じコンピューター上の2つのブラウザーウィンドウ間にDataChannel接続がありましたが、異なるコンピューター間ではありませんでした。 localhostではなくローカルサーバーのIPアドレスを指すように.htmlファイルを編集し、複数のコンピューターに接続できるようにしました。次に、実際のテストが行​​われました-インターネットに接続せずにこれを使用できますか? GoogleのSTUNサーバーを使用して指定された行を見つけ、それを

var config = {"iceServers":[{"url":"stun:stun.l.google.com:19302"}]};

ちょうど

var config = {"iceServers":[]};

出来た。 :-)

26
brainBanter

iceServersリストを省略します。

const pc = new RTCPeerConnection();

iceServersコンストラクターからRTCPeerConnectionリストを省略するか、空のリスト[]にします。

RTCPeerConnection docsから:

iceServers |オプション

RTCIceServer オブジェクトの配列。それぞれがICEエージェントが使用できる1つのサーバーを記述します。これらは通常、STUNサーバーまたはTURNサーバー、あるいはその両方です。これが指定されていない場合、接続の試行は利用可能なSTUNまたはTURNサーバーなしで行われ、接続はローカルピアに制限されます。

webrtc/samplesデモ

WebRTCプロジェクト には Trickle ICE サンプルがあり、iceServersの変更が収集された候補住所にどのように影響するかを確認するために使用できます。あなたが見たい具体的なサンプルは次のとおりです。

  1. ページの下部にある[候補を収集]ボタンを押して、デフォルト設定で実行します。これにより、NATのパブリック側のアドレスを含むアドレスのリストが返されます。

    Default ICE Servers

  2. リストからすべてのICEサーバーを削除し、Gather候補をもう一度押します。今回は、ローカルネットワークアドレスのみが表示されます。

    No ICE Servers

私のネットワークでは、デフォルトのICEサーバーを使用している場合にのみ、2つのパブリックIPv4アドレス(98で始まる)が表示されることに注意してください。空のICEサーバーリストを使用すると、パブリックIPv4アドレスが検出されなくなります。一方、私のIPv6アドレスはNATの対象ではないため、両方のテストで同じです。

これが iceServersとPeerConnectionをセットアップするソースコードへのリンク です。

1
Doug Richardson