Как направить поток аудиофайла через express. js, если он находится на другом сервере - PullRequest
0 голосов
/ 13 февраля 2020

У меня есть обработчик express. js, который принимает в качестве входных данных идентификатор файла.

И я не знаю, как перехватить поток этого файла, например, через ax ios и передать его клиентской части SPA.

Спасибо за внимание

router.get('/api/track/:id', async(req, res) => {
  // Create bot
  const telegram = new Telegram(token, { agent })
  const fileId = req.params.id

  let url
  try {
    // Getting filelink from telegram
    url = await telegram.getFileLink(fileId)
  } catch (error) {
    console.log('Error on getting link on file from telegram', error)
    return { message: 'Error on getting link on file from telegram', code: 4, error}
  }
  
  res.set('content-type', 'audio/mp3');
  res.set('accept-ranges', 'bytes');
  
  // And this is place i'm try download file as stream...
  try {
    const response = await axios({
      url,
      method: 'GET',
      responseType: 'stream'
    })
  
    console.log(response)
  } catch (error) {
    console.log(error)
  }
  
})

1 Ответ

0 голосов
/ 13 февраля 2020

Объект express res является потоком с возможностью записи . Это означает, что вы можете направить поток ответов ax ios readable в поток express writeable .

const response = await axios({
  url,
  method: 'GET',
  responseType: 'stream'
})

console.log(response)
response.data.pipe(res)
...