From b7f1747dc75171368df6ea2ab298971a33af56ed Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Mon, 18 Jun 2018 09:28:08 +0200 Subject: Create webtorrent client on player load So we don't run Angular change detection every 250ms on webtorrent import, when https://github.com/mafintosh/speedometer/pull/7 will be merged --- client/src/app/app.module.ts | 2 +- .../src/assets/player/peertube-videojs-plugin.ts | 47 +++++++++++----------- 2 files changed, 25 insertions(+), 24 deletions(-) (limited to 'client') diff --git a/client/src/app/app.module.ts b/client/src/app/app.module.ts index 51e354378..003c91009 100644 --- a/client/src/app/app.module.ts +++ b/client/src/app/app.module.ts @@ -16,7 +16,7 @@ import { MenuComponent } from './menu' import { SharedModule } from './shared' import { SignupModule } from './signup' import { VideosModule } from './videos' -import { buildFileLocale, getCompleteLocale, getDefaultLocale, isDefaultLocale } from '../../../shared/models/i18n' +import { buildFileLocale, getCompleteLocale, isDefaultLocale } from '../../../shared/models/i18n' import { getDevLocale, isOnDevLocale } from '@app/shared/i18n/i18n-utils' export function metaFactory (serverService: ServerService): MetaLoader { diff --git a/client/src/assets/player/peertube-videojs-plugin.ts b/client/src/assets/player/peertube-videojs-plugin.ts index d3ae7b137..fe9fc1a69 100644 --- a/client/src/assets/player/peertube-videojs-plugin.ts +++ b/client/src/assets/player/peertube-videojs-plugin.ts @@ -17,23 +17,7 @@ import { import * as CacheChunkStore from 'cache-chunk-store' import { PeertubeChunkStore } from './peertube-chunk-store' -const webtorrent = new WebTorrent({ - tracker: { - rtcConfig: { - iceServers: [ - { - urls: 'stun:stun.stunprotocol.org' - }, - { - urls: 'stun:stun.framasoft.org' - } - ] - } - }, - dht: false -}) - -const Plugin: VideoJSComponentInterface = videojsUntyped.getPlugin('plugin') +const Plugin: VideoJSComponentInterface = videojs.getPlugin('plugin') class PeerTubePlugin extends Plugin { private readonly playerElement: HTMLVideoElement @@ -52,9 +36,26 @@ class PeerTubePlugin extends Plugin { BANDWIDTH_AVERAGE_NUMBER_OF_VALUES: 5 // Last 5 seconds to build average bandwidth } + private readonly webtorrent = new WebTorrent({ + tracker: { + rtcConfig: { + iceServers: [ + { + urls: 'stun:stun.stunprotocol.org' + }, + { + urls: 'stun:stun.framasoft.org' + } + ] + } + }, + dht: false + }) + private player: any private currentVideoFile: VideoFile private torrent: WebTorrent.Torrent + private renderer private fakeRenderer private autoResolution = true private isAutoResolutionObservation = false @@ -194,7 +195,7 @@ class PeerTubePlugin extends Plugin { }) } - this.torrent = webtorrent.add(magnetOrTorrentUrl, torrentOptions, torrent => { + this.torrent = this.webtorrent.add(magnetOrTorrentUrl, torrentOptions, torrent => { console.log('Added ' + magnetOrTorrentUrl + '.') if (oldTorrent) { @@ -287,10 +288,10 @@ class PeerTubePlugin extends Plugin { } flushVideoFile (videoFile: VideoFile, destroyRenderer = true) { - if (videoFile !== undefined && webtorrent.get(videoFile.magnetUri)) { + if (videoFile !== undefined && this.webtorrent.get(videoFile.magnetUri)) { if (destroyRenderer === true && this.renderer && this.renderer.destroy) this.renderer.destroy() - webtorrent.remove(videoFile.magnetUri) + this.webtorrent.remove(videoFile.magnetUri) console.log('Removed ' + videoFile.magnetUri) } } @@ -460,8 +461,8 @@ class PeerTubePlugin extends Plugin { // Http fallback if (this.torrent === null) return this.trigger('torrentInfo', false) - // webtorrent.downloadSpeed because we need to take into account the potential old torrent too - if (webtorrent.downloadSpeed !== 0) this.downloadSpeeds.push(webtorrent.downloadSpeed) + // this.webtorrent.downloadSpeed because we need to take into account the potential old torrent too + if (this.webtorrent.downloadSpeed !== 0) this.downloadSpeeds.push(this.webtorrent.downloadSpeed) return this.trigger('torrentInfo', { downloadSpeed: this.torrent.downloadSpeed, @@ -596,5 +597,5 @@ class PeerTubePlugin extends Plugin { } } -videojsUntyped.registerPlugin('peertube', PeerTubePlugin) +videojs.registerPlugin('peertube', PeerTubePlugin) export { PeerTubePlugin } -- cgit v1.2.3