no TURN server
This commit is contained in:
@@ -2,21 +2,31 @@
|
|||||||
|
|
||||||
var airplay = require('airplay-js')
|
var airplay = require('airplay-js')
|
||||||
var chromecasts = require('chromecasts')()
|
var chromecasts = require('chromecasts')()
|
||||||
|
var createTorrent = require('create-torrent')
|
||||||
var dragDrop = require('drag-drop')
|
var dragDrop = require('drag-drop')
|
||||||
var electron = require('electron')
|
var electron = require('electron')
|
||||||
var networkAddress = require('network-address')
|
var networkAddress = require('network-address')
|
||||||
var path = require('path')
|
var path = require('path')
|
||||||
var throttle = require('throttleit')
|
var throttle = require('throttleit')
|
||||||
var torrentPoster = require('./lib/torrent-poster')
|
var torrentPoster = require('./lib/torrent-poster')
|
||||||
var getClient = require('./lib/get-client')
|
var WebTorrent = require('webtorrent')
|
||||||
|
|
||||||
var createElement = require('virtual-dom/create-element')
|
var createElement = require('virtual-dom/create-element')
|
||||||
var diff = require('virtual-dom/diff')
|
var diff = require('virtual-dom/diff')
|
||||||
var patch = require('virtual-dom/patch')
|
var patch = require('virtual-dom/patch')
|
||||||
|
|
||||||
|
var App = require('./views/app')
|
||||||
|
|
||||||
var HEADER_HEIGHT = 38
|
var HEADER_HEIGHT = 38
|
||||||
|
|
||||||
var App = require('./views/app')
|
// Force use of webtorrent trackers on all torrents
|
||||||
|
global.WEBTORRENT_ANNOUNCE = createTorrent.announceList
|
||||||
|
.map(function (arr) {
|
||||||
|
return arr[0]
|
||||||
|
})
|
||||||
|
.filter(function (url) {
|
||||||
|
return url.indexOf('wss://') === 0 || url.indexOf('ws://') === 0
|
||||||
|
})
|
||||||
|
|
||||||
var state = global.state = {
|
var state = global.state = {
|
||||||
server: null,
|
server: null,
|
||||||
@@ -26,7 +36,7 @@ var state = global.state = {
|
|||||||
},
|
},
|
||||||
view: {
|
view: {
|
||||||
title: 'WebTorrent',
|
title: 'WebTorrent',
|
||||||
client: null,
|
client: null, // TODO: remove this from the view
|
||||||
savedWindowBounds: null,
|
savedWindowBounds: null,
|
||||||
history: [],
|
history: [],
|
||||||
historyIndex: 0,
|
historyIndex: 0,
|
||||||
@@ -35,7 +45,7 @@ var state = global.state = {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
var currentVDom, rootElement, updateThrottled
|
var client, currentVDom, rootElement, updateThrottled
|
||||||
|
|
||||||
function init () {
|
function init () {
|
||||||
currentVDom = App(state, dispatch)
|
currentVDom = App(state, dispatch)
|
||||||
@@ -44,13 +54,11 @@ function init () {
|
|||||||
|
|
||||||
updateThrottled = throttle(update, 1000)
|
updateThrottled = throttle(update, 1000)
|
||||||
|
|
||||||
getClient(function (err, client) {
|
var client = new WebTorrent()
|
||||||
if (err) return onError(err)
|
client.on('warning', onWarning)
|
||||||
global.client = client
|
client.on('error', onError)
|
||||||
state.view.client = client
|
|
||||||
client.on('warning', onWarning)
|
state.view.client = client
|
||||||
client.on('error', onError)
|
|
||||||
})
|
|
||||||
|
|
||||||
dragDrop('body', onFiles)
|
dragDrop('body', onFiles)
|
||||||
|
|
||||||
@@ -152,20 +160,14 @@ function isNotTorrentFile (file) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function addTorrent (torrentId) {
|
function addTorrent (torrentId) {
|
||||||
getClient(function (err, client) {
|
var torrent = client.add(torrentId)
|
||||||
if (err) return onError(err)
|
addTorrentEvents(torrent)
|
||||||
var torrent = client.add(torrentId)
|
|
||||||
addTorrentEvents(torrent)
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function seed (files) {
|
function seed (files) {
|
||||||
if (files.length === 0) return
|
if (files.length === 0) return
|
||||||
getClient(function (err, client) {
|
var torrent = client.seed(files)
|
||||||
if (err) return onError(err)
|
addTorrentEvents(torrent)
|
||||||
var torrent = client.seed(files)
|
|
||||||
addTorrentEvents(torrent)
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function addTorrentEvents (torrent) {
|
function addTorrentEvents (torrent) {
|
||||||
|
|||||||
@@ -1,39 +0,0 @@
|
|||||||
var createTorrent = require('create-torrent')
|
|
||||||
var thunky = require('thunky')
|
|
||||||
var WebTorrent = require('webtorrent')
|
|
||||||
var xhr = require('xhr')
|
|
||||||
|
|
||||||
module.exports = thunky(getClient)
|
|
||||||
|
|
||||||
global.WEBTORRENT_ANNOUNCE = createTorrent.announceList
|
|
||||||
.map(function (arr) {
|
|
||||||
return arr[0]
|
|
||||||
})
|
|
||||||
.filter(function (url) {
|
|
||||||
return url.indexOf('wss://') === 0 || url.indexOf('ws://') === 0
|
|
||||||
})
|
|
||||||
|
|
||||||
function getClient (cb) {
|
|
||||||
getRtcConfig('https://instant.io/rtcConfig', function (err, rtcConfig) {
|
|
||||||
if (err) console.error(err)
|
|
||||||
var client = new WebTorrent({ rtcConfig: rtcConfig })
|
|
||||||
cb(null, client)
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
function getRtcConfig (url, cb) {
|
|
||||||
xhr(url, function (err, res) {
|
|
||||||
if (err || res.statusCode !== 200) {
|
|
||||||
cb(new Error('Could not get WebRTC config from server. Using default (without TURN).'))
|
|
||||||
} else {
|
|
||||||
var rtcConfig
|
|
||||||
try { rtcConfig = JSON.parse(res.body) } catch (err) {}
|
|
||||||
if (rtcConfig) {
|
|
||||||
console.log('got rtc config: %o', rtcConfig)
|
|
||||||
cb(null, rtcConfig)
|
|
||||||
} else {
|
|
||||||
cb(new Error('Got invalid WebRTC config from server: ' + res.body))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
@@ -19,11 +19,9 @@
|
|||||||
"network-address": "^1.1.0",
|
"network-address": "^1.1.0",
|
||||||
"pretty-bytes": "^3.0.0",
|
"pretty-bytes": "^3.0.0",
|
||||||
"throttleit": "^1.0.0",
|
"throttleit": "^1.0.0",
|
||||||
"thunky": "^0.1.0",
|
|
||||||
"upload-element": "^1.0.1",
|
"upload-element": "^1.0.1",
|
||||||
"virtual-dom": "^2.1.1",
|
"virtual-dom": "^2.1.1",
|
||||||
"webtorrent": "^0.82.0",
|
"webtorrent": "^0.82.0"
|
||||||
"xhr": "^2.2.0"
|
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"electron-packager": "^5.0.0",
|
"electron-packager": "^5.0.0",
|
||||||
|
|||||||
Reference in New Issue
Block a user