Узел JS памяти кучи при потоковой передаче большого файла - PullRequest
0 голосов
/ 07 ноября 2019

Assalamualaikum, ребята, пожалуйста, помогите мне. Я пытаюсь сделать сервис потокового видео, используя nodejs и express. Я использую fs.createReadStream() и pipe() и отправляю его в ответ http. При обработке 1 пользователя это хорошо работает и не проблема. Когда 7 пользователей получают к нему доступ вместе, 7-й пользователь не имеет никакого ответа от http. Просто в ожидании. Видео не показывает. первые шесть пользователей не имеют никаких проблем. Пожалуйста, помогите мне

это фрагмент кода

const asset = path.join(__dirname,/content${data.path}${contentType.name}.${contentType.ext}) const stat = fs.statSync(asset) const fileSize = stat.size const range = req.headers.range

if(range){
    const parts = range.replace(/bytes=/,"").split("-")
    const start = parseInt(parts[0],10)
    const end = parts[1]?parseInt([1],10):fileSize-1
    const chunkSize = (end-start)+1
    const file = fs.createReadStream(asset,{start,end})
    const head = {
        "Content-Range":`bytes ${start}-${end}/${fileSize}`,
        "Accept-Ranges":"bytes",
        "Content-Length":chunkSize,
        "Content-Type":contentType.contType
    }
    res.writeHead(206,head)

    file.pipe(res)
}else{
    const head = {
        "Content-Length":fileSize,
        "Content-Type":contentType.contType
    }
    res.writeHead(200,head)
    const file = fs.createReadStream(asset)

    file.pipe(res)

    file.on('error',(err)=>{
        console.log(err)
    })
}

`

** Должен ли я истощить буфер для его решения? **

спасибо всем, да благословит вас всех Бог

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...