Skip to content

Commit a5d0975

Browse files
committed
Do not crash when wrtc dep is missing
1 parent e2d4e8c commit a5d0975

File tree

3 files changed

+22
-5
lines changed

3 files changed

+22
-5
lines changed

client.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,8 @@ function Client (peerId, port, torrent, opts) {
6161
return new HTTPTracker(self, announceUrl, trackerOpts)
6262
} else if (protocol === 'udp:' && typeof UDPTracker === 'function') {
6363
return new UDPTracker(self, announceUrl, trackerOpts)
64-
} else if (protocol === 'ws:' || protocol === 'wss:') {
64+
} else if ((protocol === 'ws:' || protocol === 'wss:') &&
65+
WebSocketTracker.supported) {
6566
return new WebSocketTracker(self, announceUrl, trackerOpts)
6667
}
6768
return null

lib/websocket-tracker.js

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,15 @@ var inherits = require('inherits')
99
var Peer = require('simple-peer')
1010
var Socket = require('simple-websocket')
1111

12+
var wrtc
13+
try {
14+
wrtc = require('wrtc') // webrtc in node - will be empty object in browser
15+
} catch (err) {
16+
wrtc = null // optional dependency failed to install
17+
}
18+
19+
var WEBRTC_SUPPORT = typeof window !== 'undefined' || !!wrtc
20+
1221
var common = require('./common')
1322

1423
// It turns out that you can't open multiple websockets to the same server within one
@@ -38,6 +47,8 @@ function WebSocketTracker (client, announceUrl, opts) {
3847
self._socket.on('data', self._onSocketData.bind(self))
3948
}
4049

50+
WebSocketTracker.supported = WEBRTC_SUPPORT
51+
4152
WebSocketTracker.prototype.announce = function (opts) {
4253
var self = this
4354
if (!self._socket.connected) {
@@ -122,7 +133,7 @@ WebSocketTracker.prototype._onSocketData = function (data) {
122133

123134
var peer
124135
if (data.offer) {
125-
peer = new Peer({ trickle: false, config: self._opts.rtcConfig })
136+
peer = new Peer({ trickle: false, config: self._opts.rtcConfig, wrtc: wrtc })
126137
peer.id = common.binaryToHex(data.peer_id)
127138
peer.once('signal', function (answer) {
128139
var params = {
@@ -172,7 +183,8 @@ WebSocketTracker.prototype._generateOffers = function (numWant, cb) {
172183
var peer = self._peers[offerId] = new Peer({
173184
initiator: true,
174185
trickle: false,
175-
config: self._opts.rtcConfig
186+
config: self._opts.rtcConfig,
187+
wrtc: wrtc
176188
})
177189
peer.once('signal', function (offer) {
178190
offers.push({

package.json

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,8 @@
1414
"./lib/common-node": false,
1515
"./lib/http-tracker": false,
1616
"./lib/udp-tracker": false,
17-
"./server": false
17+
"./server": false,
18+
"wrtc": false
1819
},
1920
"bugs": {
2021
"url": "https://github.com/feross/bittorrent-tracker/issues"
@@ -32,7 +33,7 @@
3233
"once": "^1.3.0",
3334
"run-series": "^1.0.2",
3435
"simple-get": "^1.3.0",
35-
"simple-peer": "^4.0.4",
36+
"simple-peer": "^5.0.0",
3637
"simple-websocket": "^2.0.0",
3738
"string2compact": "^1.1.1",
3839
"ws": "^0.7.1",
@@ -63,5 +64,8 @@
6364
},
6465
"scripts": {
6566
"test": "standard && tape test/*.js"
67+
},
68+
"optionalDependencies": {
69+
"wrtc": "0.0.55"
6670
}
6771
}

0 commit comments

Comments
 (0)