Create webtorrent client on player load
authorChocobozzz <me@florianbigard.com>
Mon, 18 Jun 2018 07:28:08 +0000 (09:28 +0200)
committerChocobozzz <me@florianbigard.com>
Mon, 18 Jun 2018 08:26:18 +0000 (10:26 +0200)
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
client/src/assets/player/peertube-videojs-plugin.ts
server/lib/schedulers/update-videos-scheduler.ts

index 51e35437824629f8ca399ff78ed99a4e97507007..003c91009bc44ca7bc6e453fe49f89ecf22a3eac 100644 (file)
@@ -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 {
index d3ae7b1374a7d849a92ecf3f98ec27f81e4c3dc6..fe9fc1a696ffad27cdbe20e10aed5c4842ad93b4 100644 (file)
@@ -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 }
index a964648fd962a386001b306a679609f0ae055f9d..760475af9bbc545d2e60d3bb5b710f87f83aef91 100644 (file)
@@ -1,6 +1,4 @@
-import { isTestInstance } from '../../helpers/core-utils'
 import { logger } from '../../helpers/logger'
-import { JobQueue } from '../job-queue'
 import { AbstractScheduler } from './abstract-scheduler'
 import { ScheduleVideoUpdateModel } from '../../models/video/schedule-video-update'
 import { retryTransactionWrapper } from '../../helpers/database-utils'