У меня есть обработчик (middleware), который на вход получает ID аудио файла из telegram.
router.get('/api/track/:id', async(req, res) => {
// Создаем бота использую плагин Telegraf с прокси агентом
const telegram = new Telegram(token, { agent });
const fileId = req.params.id;
let url; // Сюда запишем ссылку
try {
url = await telegram.getFileLink(fileId); // Получаем ссылку на файл
} catch (error) {
console.log(error);
}
// ...
}
Дальше я хочу этот файл начать скачивать по ссылке как поток и отдавать этот поток на клиентскую (spa) часть.
res.set('content-type', 'audio/mp3');
res.set('accept-ranges', 'bytes');
try {
let audioFile = await axios({
url, // Ссылка на файл в телеграме
method: 'GET',
responseType: 'stream'
})
audioFile.data.pipe(res)
audioFile.on('error', err => {
res.statusCode = 500
res.end("Server Error")
console.error(err)
});
audioFile
.on('open', (chunk) => {
console.log("open")
res.write(chunk)
})
.on('close', () => {
console.log("close")
res.end()
})
res.on('close', () => {
audioFile.destroy();
})
} catch (error) {
console.log(error)
}
И ловлю ошибку: read ECONNRESET at TLSWrap.onStreamRead (internal/stream_base_commons.js:111:27
Для телеграма я использую прокси и он работает.
В чем проблема, где я допустил ошибку?