_createTracker () { const opts = Object.assign({}, this._trackerOpts, { infoHash: this.infoHash, announce: this._announce, peerId: this.peerId, port: this._port, userAgent: this._userAgent }) const tracker = new Tracker(opts) tracker.on('warning', this._onWarning) tracker.on('error', this._onError) tracker.on('peer', this._onTrackerPeer) tracker.on('update', this._onTrackerAnnounce) tracker.setInterval(this._intervalMs) tracker.start() return tracker }
Discovery.prototype._createTracker = function () { var self = this var opts = extend(self._trackerOpts, { infoHash: self.infoHash, announce: self._announce, peerId: self.peerId, port: self._port }) var tracker = new Tracker(opts) tracker.on('warning', self._onWarning) tracker.on('error', self._onError) tracker.on('peer', self._onTrackerPeer) tracker.on('update', self._onTrackerAnnounce) tracker.setInterval(self._intervalMs) tracker.start() return tracker }
tracker.on('peer', function (peer) { peers.push(peer) if (peer.connected) onConnect() else peer.once('connect', onConnect) function onConnect () { peer.on('data', onMessage) peer.on('close', onClose) peer.on('error', onClose) peer.on('end', onClose) peer.send(JSON.stringify({ username: username, color: color, state: state })) function onClose () { peer.removeListener('data', onMessage) peer.removeListener('close', onClose) peer.removeListener('error', onClose) peer.removeListener('end', onClose) peers.splice(peers.indexOf(peer), 1) redraw() } function onMessage (data) { try { data = JSON.parse(data) } catch (err) { console.error(err.message) } if (data.username) { peer.username = data.username peer.color = data.color redraw() } if (data.state) { Object.keys(data.state) .filter(function (id) { return !state[id] }) .forEach(function (id) { state[id] = data.state[id] }) redraw() } if (data.pt) { if (!state[data.i]) state[data.i] = { pts: [], color: data.color } state[data.i].pts.push(data.pt) redraw() } if (data.infoHash) { state[data.infoHash] = data redraw() } } } })