From c0fff0863124829e7341ca69912a8aea26ba6b44 Mon Sep 17 00:00:00 2001 From: subnub Date: Mon, 11 May 2020 13:28:09 -0400 Subject: [PATCH] Made it so the backend cancels streams that are rerequested by the client --- backend/controllers/file.ts | 2 +- .../ChunkService/FileSystemService.ts | 19 +++++-------------- backend/services/ChunkService/MongoService.ts | 6 ++++++ backend/services/ChunkService/S3Service.ts | 8 ++++---- .../ChunkService/utils/awaitStreamVideo.ts | 6 +++--- 5 files changed, 19 insertions(+), 22 deletions(-) diff --git a/backend/controllers/file.ts b/backend/controllers/file.ts index df11140..791326d 100644 --- a/backend/controllers/file.ts +++ b/backend/controllers/file.ts @@ -372,7 +372,7 @@ class FileController { //tempStorage[req.params.uuid] = uuid.v4(); - console.log("stream request", tempStorage) + console.log("stream request"); // req.on("close", () => { // console.log("req closed stream"); diff --git a/backend/services/ChunkService/FileSystemService.ts b/backend/services/ChunkService/FileSystemService.ts index a6b6a6e..0b100a9 100644 --- a/backend/services/ChunkService/FileSystemService.ts +++ b/backend/services/ChunkService/FileSystemService.ts @@ -256,22 +256,13 @@ class FileSystemService implements ChunkInterface { readStream.pipe(decipher); + req.on("close", () => { + // console.log("req closed"); + readStream.destroy(); + }) + const tempUUID = req.params.uuid; - // req.on("close", () => { - // // console.log("Destroying read stream"); - // // readStream.destroy(); - // // console.log("Read Stream Destoryed"); - // }) - - // req.on("error", () => { - // console.log("req error"); - // }) - - // req.on("pause", () => { - // console.log("req pause") - // }) - await awaitStreamVideo(start, end, differenceStart, decipher, res, tempUUID, allStreamsToErrorCatch); } diff --git a/backend/services/ChunkService/MongoService.ts b/backend/services/ChunkService/MongoService.ts index 0d8a2fb..e60ef4b 100644 --- a/backend/services/ChunkService/MongoService.ts +++ b/backend/services/ChunkService/MongoService.ts @@ -279,6 +279,12 @@ class MongoService implements ChunkInterface { readStream.pipe(decipher); + req.on("close", () => { + // console.log("req closed"); + readStream.destroy(); + }) + + const tempUUID = req.params.uuid; await awaitStreamVideo(start, end, differenceStart, decipher, res, tempUUID, allStreamsToErrorCatch); diff --git a/backend/services/ChunkService/S3Service.ts b/backend/services/ChunkService/S3Service.ts index 915deba..1f770c2 100644 --- a/backend/services/ChunkService/S3Service.ts +++ b/backend/services/ChunkService/S3Service.ts @@ -214,15 +214,15 @@ class S3Service implements ChunkInterface { // }) req.on("close", () => { - console.log("req closed"); + // console.log("req closed"); s3ReadStream.destroy(); }) //req.on("") - req.on("end", () => { - console.log("req end"); - }) + // req.on("end", () => { + // console.log("req end"); + // }) await awaitStreamVideo(start, end, differenceStart, decipher, res, tempUUID, allStreamsToErrorCatch); } diff --git a/backend/services/ChunkService/utils/awaitStreamVideo.ts b/backend/services/ChunkService/utils/awaitStreamVideo.ts index e943187..b6dc976 100644 --- a/backend/services/ChunkService/utils/awaitStreamVideo.ts +++ b/backend/services/ChunkService/utils/awaitStreamVideo.ts @@ -21,18 +21,18 @@ const awaitStreamVideo = (start: number, end:number, differenceStart: number, //console.log(tempStorage[tempUUID] !== currentUUID, tempStorage[tempUUID]) if (tempStorage[tempUUID] !== currentUUID) { - console.log("New Stream Requested, Desroying old stream"); + //console.log("New Stream Requested, Desroying old stream"); streamsToErrorCatch.forEach((stream) => { stream.destroy(); }) - console.log("Old Stream Desroyed"); + //console.log("Old Stream Desroyed"); resolve(); //delete tempStorage[tempUUID]; } - console.log("stream passed", currentUUID); + //console.log("stream passed", currentUUID); // if (tempStorage[tempUUID] !== undefined && tempStorage[tempUUID] !== currentUUID) {