@@ -104,45 +104,52 @@ jsFlowTracker.prototype._onData = function (payload, from) {
104104 // Handle received peers
105105 if ( Array . isArray ( payload . peers ) ) {
106106 payload . peers . forEach ( function ( peerInfo ) { //For all peers we receive - Open a WebRTC peer connection
107+
107108 var peerId = peerInfo . peerId ;
108109
109- console . log ( 'Will handle connection for peer: ' , peerId ) ;
110-
111- var peer = self . _peers [ peerId ] = new Peer ( {
112- initiator : true ,
113- trickle : true ,
114- config : self . client . _rtcConfig ,
115- wrtc : self . client . _wrtc
116- } )
117- peer . id = peerId
118- peer . on ( 'close' , function ( ) {
119- console . info ( 'Peer connection destroyed, will remove from list of peers!' )
120- delete self . _peers [ from ]
121- } )
122-
123- peer . on ( 'signal' , function ( signalObject ) {
124- console . log ( 'GOT SIGNAL, expecting offer/ice' , signalObject ) ;
125- if ( signalObject . candidate ) { // The signalling is for ICE
126- console . log ( 'We have an ice candidate!' )
127- var params = {
110+ if ( ! self . _peers [ peerId ] ) {
111+
112+ console . log ( 'Will handle connection for peer: ' , peerId ) ;
113+
114+ var peer = self . _peers [ peerId ] = new Peer ( {
115+ initiator : true ,
116+ trickle : true ,
117+ config : self . client . _rtcConfig ,
118+ wrtc : self . client . _wrtc
119+ } )
120+ peer . id = peerId
121+ peer . on ( 'close' , function ( ) {
122+ console . info ( 'Peer connection destroyed, will remove from list of peers!' )
123+ delete self . _peers [ from ]
124+ } )
125+
126+ peer . on ( 'signal' , function ( signalObject ) {
127+ console . log ( 'GOT SIGNAL, expecting offer/ice' , signalObject ) ;
128+ if ( signalObject . candidate ) { // The signalling is for ICE
129+ console . log ( 'We have an ice candidate!' )
130+ var params = {
131+ info_hash : self . client . _infoHash . toString ( 'base64' ) ,
132+ peer_id : self . _peerID ,
133+ candidate : signalObject . candidate
134+ }
135+ jsFlow . messageUser ( peerId , params , 'webrtc_ice' ) ;
136+ }
137+ else { // The signalling is for an OFFER
138+ offer = signalObject ;
139+ console . log ( 'We got an offer' , offer )
140+ var params = {
128141 info_hash : self . client . _infoHash . toString ( 'base64' ) ,
129142 peer_id : self . _peerID ,
130- candidate : signalObject . candidate
143+ offer : offer
131144 }
132- jsFlow . messageUser ( peerId , params , 'webrtc_ice' ) ;
133- }
134- else { // The signalling is for an OFFER
135- offer = signalObject ;
136- console . log ( 'We got an offer' , offer )
137- var params = {
138- info_hash : self . client . _infoHash . toString ( 'base64' ) ,
139- peer_id : self . _peerID ,
140- offer : offer
145+
146+ jsFlow . messageUser ( peerId , params , 'webrtc_offer' ) ;
141147 }
148+ } )
142149
143- jsFlow . messageUser ( peerId , params , 'webrtc_offer' ) ;
144- }
145- } )
150+ } else {
151+ console . log ( "Ignore peer, connection already exists." )
152+ }
146153 } )
147154 } ;
148155}
0 commit comments