diff --git a/backend/controllers/file.ts b/backend/controllers/file.ts index 9ad58cd..ad63c29 100644 --- a/backend/controllers/file.ts +++ b/backend/controllers/file.ts @@ -384,7 +384,7 @@ class FileController { await this.chunkService.streamVideo(user, fileID, headers, res, req); - console.log("stream finished"); + //console.log("stream finished"); } catch (e) { diff --git a/backend/services/ChunkService/FileSystemService.ts b/backend/services/ChunkService/FileSystemService.ts index 0b100a9..32abca0 100644 --- a/backend/services/ChunkService/FileSystemService.ts +++ b/backend/services/ChunkService/FileSystemService.ts @@ -256,14 +256,15 @@ class FileSystemService implements ChunkInterface { readStream.pipe(decipher); - req.on("close", () => { - // console.log("req closed"); - readStream.destroy(); - }) + // req.on("close", () => { + // // console.log("req closed"); + // readStream.destroy(); + // }) const tempUUID = req.params.uuid; - await awaitStreamVideo(start, end, differenceStart, decipher, res, tempUUID, allStreamsToErrorCatch); + await awaitStreamVideo(start, end, differenceStart, decipher, res, req, tempUUID, allStreamsToErrorCatch); + console.log("Video Stream Finished"); } getPublicDownload = async(fileID: string, tempToken: any, res: Response) => { diff --git a/backend/services/ChunkService/MongoService.ts b/backend/services/ChunkService/MongoService.ts index e60ef4b..8f2b766 100644 --- a/backend/services/ChunkService/MongoService.ts +++ b/backend/services/ChunkService/MongoService.ts @@ -279,15 +279,15 @@ class MongoService implements ChunkInterface { readStream.pipe(decipher); - req.on("close", () => { - // console.log("req closed"); - readStream.destroy(); - }) + // req.on("close", () => { + // // console.log("req closed"); + // readStream.destroy(); + // }) const tempUUID = req.params.uuid; - await awaitStreamVideo(start, end, differenceStart, decipher, res, tempUUID, allStreamsToErrorCatch); + await awaitStreamVideo(start, end, differenceStart, decipher, res, req, tempUUID, allStreamsToErrorCatch); } deleteFile = async(userID: string, fileID: string) => { diff --git a/backend/services/ChunkService/S3Service.ts b/backend/services/ChunkService/S3Service.ts index 1f770c2..f05d541 100644 --- a/backend/services/ChunkService/S3Service.ts +++ b/backend/services/ChunkService/S3Service.ts @@ -213,10 +213,10 @@ class S3Service implements ChunkInterface { // console.log("req pause") // }) - req.on("close", () => { - // console.log("req closed"); - s3ReadStream.destroy(); - }) + // req.on("close", () => { + // // console.log("req closed"); + // s3ReadStream.destroy(); + // }) //req.on("") @@ -224,7 +224,7 @@ class S3Service implements ChunkInterface { // console.log("req end"); // }) - await awaitStreamVideo(start, end, differenceStart, decipher, res, tempUUID, allStreamsToErrorCatch); + await awaitStreamVideo(start, end, differenceStart, decipher, res, req, tempUUID, allStreamsToErrorCatch); } getThumbnail = async(user: UserInterface, id: string) => { diff --git a/backend/services/ChunkService/utils/awaitStreamVideo.ts b/backend/services/ChunkService/utils/awaitStreamVideo.ts index b6dc976..665b5eb 100644 --- a/backend/services/ChunkService/utils/awaitStreamVideo.ts +++ b/backend/services/ChunkService/utils/awaitStreamVideo.ts @@ -3,7 +3,7 @@ import tempStorage from "../../../tempStorage/tempStorage"; import uuid from "uuid"; const awaitStreamVideo = (start: number, end:number, differenceStart: number, - decipher: any, res: Response, tempUUID: string, streamsToErrorCatch: any[]) => { + decipher: any, res: Response, req: Request, tempUUID: string, streamsToErrorCatch: any[]) => { const currentUUID = uuid.v4(); tempStorage[tempUUID] = currentUUID; @@ -11,7 +11,18 @@ const awaitStreamVideo = (start: number, end:number, differenceStart: number, return new Promise((resolve, reject) => { let firstBytesRemoved = false; - let sizeCounter = 0; + //let sizeCounter = 0; + + req.on("close", () => { + streamsToErrorCatch.forEach((stream) => { + stream.destroy(); + }) + resolve(); + }) + + req.on("end", () => { + resolve(); + }) decipher.on("data", (data: Buffer | string) => { @@ -32,6 +43,8 @@ const awaitStreamVideo = (start: number, end:number, differenceStart: number, //delete tempStorage[tempUUID]; } + //console.log("data", currentUUID); + //console.log("stream passed", currentUUID); // if (tempStorage[tempUUID] !== undefined && tempStorage[tempUUID] !== currentUUID) { @@ -70,7 +83,7 @@ const awaitStreamVideo = (start: number, end:number, differenceStart: number, firstBytesRemoved = true; - sizeCounter += dataBack.length; + //sizeCounter += dataBack.length; res.write(dataBack); res.flush(); @@ -80,7 +93,7 @@ const awaitStreamVideo = (start: number, end:number, differenceStart: number, res.write(data); res.flush(); - sizeCounter += data.length; + //sizeCounter += data.length; }) decipher.on("end", () => {