1

私はWebRTCの初心者です。ユーザーがお互いのビデオ ストリームを表示したり、ファイルを交換したりできるアプリケーションを構築しています。オーディオ/ビデオ部分が実装され、機能しています。問題は、ファイルを交換する機能を追加する必要があることです。以下のコードを使用して PeerConnection オブジェクトを初期化しています

var connection = _getConnection(partnerId);
console.log("Initiate offer")
// Add our audio/video stream
connection.addStream(stream);

// Send an offer for a connection
connection.createOffer(function (desc) { _createOfferSuccess(connection, partnerId, desc) }, function (error) { console.log('Error creating session description: ' + error); });

_getConnection は、次を使用して新しい RTCPeerConnection オブジェクトを作成します

var connection = new RTCPeerConnection(iceconfig); 

つまり、明示的な制約はありません。また、さまざまなイベント ハンドラーを初期化します。この直後に、オーディオ/ビデオ ストリームをこの接続に接続します。また、パートナー ID を使用してこれらの接続をキャッシュするので、後で使用できます。

問題は、後でキャッシュから接続オブジェクトを呼び出して、次のような方法でデータ チャネルを追加できるかどうかです。

connection.createDataChannel("DataChannel", dataChannelOptions);

それを使用してファイルを共有しますか、それとも新しい RTCPeerConnection オブジェクトを作成してデータ チャネルを接続する必要がありますか?

4

1 に答える 1

0

ファイル転送だけのために別の PeerConnection を作成する必要はありません。既存の PeerConnection は、従来の Websocket メカニズムのように動作する RTCDatachannel を利用できます (つまり、中央サーバーを使用しない双方向通信)

`var PC = new RTCPeerConnection();

//specifying options for my datachannel 
var dataChannelOptions = {
  ordered: false, // unguaranted sequence
  maxRetransmitTime: 2000, // 2000 miliseconds is the maximum time to try and retrsanmit failed messages 
  maxRetransmits : 5  // 5 is the number of times to try to retransmit failed messages , other options are negotiated , id , protocol   
};


// createing data channel using RTC datachannel API name DC1
var dataChannel = PC.createDataChannel("DC1", dataChannelOptions);

dataChannel.onerror = function (error) {
  console.log("DC Error:", error);
};

dataChannel.onmessage = function (event) {
  console.log("DC Message:", event.data);
};

dataChannel.onopen = function () {
  dataChannel.send(" Sending 123 ");  // you can add file here in either strings/blob/array bufers almost anyways
};

dataChannel.onclose = function () {
  console.log("DC is Closed");
};

 `

PS: データチャネル API を介してファイルを送信する際は、事前にファイルを小さなチャンクに分割することをお勧めします。ほぼ 10 ~ 15 KB のチャンク サイズをお勧めします。

于 2015-01-28T06:10:25.993 に答える