Salve a tutti sto facendo un paio di esperimenti per implementare un sistema P2P.
Sto cercando di capire meglio come funziona il RTCPeerConnection, ma non riesco a farlo funzionare!!!


Spero che il codice risulti leggibbile!!!!


codice:

// settaggi
var signalingChannel;
var myCandidate;


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


var option = {
    optional: [{
        RtpDataChannels: true
    }]
};


var RTCPeerConnection   = window.mozRTCPeerConnection       || window.webkitRTCPeerConnection;
var IceCandidate        = window.mozRTCIceCandidate         || window.RTCIceCandidate;
var SessionDescription  = window.mozRTCSessionDescription   || window.RTCSessionDescription;


var peer;
var myCandidate;


function init(){
    signalingChannel = new SignalingChannel();
    peer = new RTCPeerConnection(servers, option);


    peer.onicecandidate = function( evt ){
        if( evt.candidate ){
             console.log(evt.candidate);
            signalingChannel.send({
                candidate : JSON.stringify(evt.candidate)
            });
        }
    }


    peer.createOffer(function(offer) {
            peer.setLocalDescription(offer, function(evt){
                console.log(evt);
            },
            function(err){
                console.log('err');
                console.log(err);
            });
        },
        function(err) {
            console.log('errore');
            console.log(err);
        }
    );


    signalingChannel.onmessage = function( evt ){
        var message = evt.data;
        if( message.sdp ){
            peer.setRemoteDescription( new SessionDescription( message.sdp ), function(){
                if( peer.remoteDescription.type == 'offer' ) peer.createAnswer( localDescrCreated, logError );
            }, logError);
        }
        else peer.addIceCandidate(new IceCandidate( message.candidate ));
    }


	peer.oniceconnectionstatechange = function() {
		console.log(peer.iceConnectionState);
	};
	
	peer.onopen = function(evt){
		console.log(evt);
	}


};




function localDescrCreated( desc ){
    peer.setLocalDescription( desc, function(){
        // risposta
        signalingChannel.send({
            sdp : JSON.stringify(peer.localDescription)
        });
    }, logError)
}


function logError( err ){
    console.log( err );
}