分離された LAN 上で、DHCP サーバーによって割り当てられた IP アドレスだけで WebRTC 接続を確立する方法はありますか?
Node.jsとSocket.ioを使えば実現できるとわかっていますが、私の限られたスキルではそのようなサーバーをセットアップするのは避けたいと思っていました。私はプログラミングを少しだけやっている理科の教師なので、単純にする。 ありがとう!
アップデート
アレックス、すべてのコンピュータが同じローカルネットワーク上にある場合はSTUNサーバーの使用を避けることができるというのは正しいです。私は勇気を出してラップトップにNode.jsをインストールしなければなりませんでしたが、それは本当に複雑ではありませんでした。その後、うまくいかなかった「実用的な例」をたくさん試しましたが、これですそして彼のGitHub ファイル。
Nodeでサーバースクリプトを実行した後、DataChannel
同じマシン上の2つのブラウザウィンドウ間の接続は確立しましたが、異なるコンピュータ間の接続は確立しませんでした。.htmlファイルを編集して、ローカルサーバーのIPアドレスではなくローカルホストそして複数のコンピュータに接続できるようになりました。次に本当のテストです。インターネット接続なしでこれを使用できるでしょうか?GoogleのSTUNサーバーを使用するように指定する行を見つけて、
var config = {"iceServers":[{"url":"stun:stun.l.google.com:19302"}]};
ただ
var config = {"iceServers":[]};
出来た。 :-)
ベストアンサー1
リストを省略iceServers
:
const pc = new RTCPeerConnection();
iceServers
コンストラクターからリストを省略するかRTCPeerConnection
、空のリストにします[]
。
からRTCPeer接続ドキュメント:
iceServers | オプション
の配列
RTCIceServer
オブジェクト。それぞれが ICE エージェントによって使用される可能性のある 1 つのサーバーを表します。これらは通常、STUN サーバーおよび/または TURN サーバーです。これを指定しないと、STUN サーバーまたは TURN サーバーが利用できない状態で接続が試行され、接続がローカル ピアに制限されます。
webrtc/サンプルデモ
のWebRTC プロジェクトがありますトリクルICE収集された候補アドレスにどのような変更が影響するかを確認するために使用できるサンプルiceServers
。確認したい特定のサンプルは次のとおりです。
デフォルト設定で実行するには、候補者を集めるページの下部にあるボタンをクリックします。これにより、NAT のパブリック側のアドレスを含むアドレスのリストが返されます。
リストからすべてのICEサーバーを削除し、候補者を集める今度は、ローカル ネットワーク アドレスのみが表示されます。
私のネットワークでは、2 つのパブリック IPv4 アドレス (98 で始まる) は、デフォルトの ICE サーバーを使用している場合にのみ表示されることに注意してください。空の ICE サーバー リストを使用すると、パブリック IPv4 アドレスは検出されなくなります。一方、IPv6 アドレスは NAT の対象ではないため、両方のテストで同じです。