Skip to content

Commit 9785ba1

Browse files
committed
Fixed bug
1 parent 53b8fd3 commit 9785ba1

File tree

1 file changed

+39
-32
lines changed

1 file changed

+39
-32
lines changed

lib/jsflow-tracker.js

Lines changed: 39 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)