0

私の状況では、同じネットワーク上にある 2 台のコンピューター間に双方向信号チャネルが必要です。実際には、「ping」を前後に送信するだけです。両方のコンピューターが同じ特権を持つと見なすことができます。

シンプルなデータ チャネルを開くために、peer.js によって抽象化された webrtc を使用しようとしていました。可能な限り、両方のクライアントで同じコードを使用したいと考えています。

理想的な解決策は次のとおりです。2 人のユーザーが Web サイトにアクセスし、接続する ID/リモート ID を選択せず​​に自動的に接続できます。

わかりません: 発信者/リスナーを具体的に指定する必要がありますか、それとも両側で接続を開始できますか? そのような接続の最も単純な実装を誰かに教えてもらえますか? サーバーの無料の開発キーを使用して、接続の仲介を実行しています。ありがとう!

4

2 に答える 2

1

peer.js では、接続先のピアの接続 ID を知っている必要があります。これは、接続を仲介するためにサーバー側のロジックが必要であることを意味します。

常に最新の 2 つの着信クライアントを接続したい場合は、id として 1 から始めてピアの構築を試み、失敗している間に id を増やして再試行することができます。次に、奇数で成功した場合は何もせず、偶数で成功した場合は、yourid - 1 への接続を開き、接続の使用を開始します。

// Use id prefix so we don't collide with other users on peer cloud server
let id_prefix = 'quarnos-';
let id = 0;
let peer = null;
let connection = null;

// Try to initialize peer using incrementing id
do {
  id++;
  peer = new Peer(id_prefix + id);
} while (!peer);

// When someone connects to us, save connection and log message
peer.on('connection', function(incoming_connection) {
  incoming_connection.on('data', function(data){
    if (!connection) {
      connection = incoming_connection;
      connection.send('connection established');
    }
    console.log(data);
    // Here you could put some timed connection.send() logic to make it go back and forth between peers, as requested in the OP
  });
});

// A peer with an even id tries to connect to the peer with id one lower (peer 2 connects to peer 1, etc.)
if (id % 2) {
  let connection = peer.connect(id_prefix + (id - 1));
  connection.on('open', function(){
    console.log('trying to establish connection to ' + id_prefix + (id - 1));
    connection.send('connection opened by ' + (id_prefix + id));
  });
}

これは、ピア 2 およびピア 1 で出力されるtrying to establish connection to quarnos-1はずです。明らかに、これはあまり堅牢ではなく、2 台のコンピューターを接続する方法を簡単かつ汚い方法で示す最小限の例にすぎません。ページのリロード時に同じピアに再接続できるように、接続を管理するサーバー側のロジックを実際に実装し、接続 ID を Cookie に保存する必要があります。connection establishedconnection opened by quarnos-2

于 2015-09-03T12:51:47.433 に答える