1

現在、WebRTCで遊んでいます。私の目標は、2 つのブラウザー間でデータチャネルをセットアップすることです。Chrome-Chrome はうまく機能しています。今、私は Firefox-Firefox で遊んでいます。ここに私の現在のコードからの MEW があります:

var servers = { "iceServers": [{ "url": "stun:stun.l.google.com:19302" }] };
var RTCPeerConnection = window.mozRTCPeerConnection || window.webkitRTCPeerConnection;
var SessionDescription = window.mozRTCSessionDescription || window.RTCSessionDescription;
var IceCandidate = window.mozRTCIceCandidate || window.RTCIceCandidate;

var peerConnection = new RTCPeerConnection(servers, { optional: [{ RtpDataChannels: true }] });
peerConnection.onicecandidate = function (event) {
    peerConnection.onicecandidate = null;
    console.log('ICE Candidate:', JSON.stringify(event.candidate))
};

var channel = peerConnection.createDataChannel("sendDataChannel", {reliable: false});

peerConnection.createOffer(
    function (offer) {
        peerConnection.setLocalDescription(offer);
    }, function (e) { }
);

が呼び出されるとすぐsetLocalDescriptionに、関数onicecandidateが呼び出されます (予想どおり)。Chrome 36 では、次のevent.icecandidateようなものです。

{"sdpMLineIndex":0,"sdpMid":"audio","candidate":"a=candidate:3430859439 1 udp 2122260223 xxx.xxx.xxx.xxx 59773 typ host generation 0\r\n"} 

Firefoxevent.icecandidateではnull. しかし、接続を確立するには、シグナリング チャネルを介してその ICE 候補を送信する必要があります。

4

1 に答える 1

2

Chrome は「trickle-ice」をサポートしているため、onicecandidate イベントを発生させます。一方、Firefox はトリクルアイスをサポートしていません。Firefox によって生成された SDP に気付いた場合は、必要な候補行が既に含まれているはずです。null の oneicecandidate イベントは、氷の収集が完了し (Chrome と Firefox の両方で)、SDP をピアに送信できることを示します。

于 2014-08-25T15:38:19.583 に答える