Skip to content

Commit

Permalink
refactor: ♻️fix long standing stream requests
Browse files Browse the repository at this point in the history
  • Loading branch information
Banou26 committed Jan 28, 2024
1 parent dbed4c0 commit efad8f7
Show file tree
Hide file tree
Showing 3 changed files with 24 additions and 7 deletions.
1 change: 1 addition & 0 deletions src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -210,6 +210,7 @@ export const makeTransmuxer = async ({
)
},
clearStream: async () => {
reader?.cancel()
currentStream = undefined
reader = undefined
},
Expand Down
12 changes: 7 additions & 5 deletions src/test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -328,6 +328,7 @@ fetch(VIDEO_URL, { headers: { Range: `bytes=0-1` } })
})

const seek = queuedDebounceWithLastCall(500, async (seekTime: number) => {
const p = performance.now()
seeking = true

await video.pause()
Expand All @@ -352,6 +353,7 @@ fetch(VIDEO_URL, { headers: { Range: `bytes=0-1` } })
await new Promise(resolve => setTimeout(resolve, 0))
seeking = false
await updateBuffers()
console.log('seek time', performance.now() - p)
})

appendBuffer((await pull()).buffer)
Expand Down Expand Up @@ -391,11 +393,11 @@ fetch(VIDEO_URL, { headers: { Range: `bytes=0-1` } })
video.currentTime = 500
await new Promise(resolve => setTimeout(resolve, 2000))
video.currentTime = 600
await new Promise(resolve => setTimeout(resolve, 1000))
await new Promise(resolve => setTimeout(resolve, 2000))
video.currentTime = 300
await new Promise(resolve => setTimeout(resolve, 1000))
video.currentTime = 200
await new Promise(resolve => setTimeout(resolve, 1000))
video.currentTime = 100
// await new Promise(resolve => setTimeout(resolve, 1000))
// video.currentTime = 200
// await new Promise(resolve => setTimeout(resolve, 1000))
// video.currentTime = 100
}, 1000)
})
18 changes: 16 additions & 2 deletions vite.config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,20 @@ export default defineConfig((env) => ({
env.mode === 'development'
? []
: [commonjs()]
)
]
),
{
name: 'configure-response-headers',
configureServer: (server) => {
server.middlewares.use((_req, res, next) => {
res.setHeader('Cache-Control', 'no-store')
next()
})
}
}
],
server: {
fs: {
allow: ['../..']
}
}
}))

0 comments on commit efad8f7

Please sign in to comment.