У меня есть этот код аудиопотока, в котором я пытаюсь получить значение для диапазона, поскольку пользователь взаимодействует с ним в браузере, как видеопоток, однако в этом случае поведение не складывается;после начальной загрузки страницы диапазон больше не присутствует в запросе, даже при последующих обновлениях.
const { createServer } = require('http');
const { createReadStream, stat } = require('fs');
const path = require('path');
const { promisify } = require('util');
const fileInfo = promisify(stat);
const audiofile = path.join(__dirname, 'myfile.mp3');
createServer(async (req, res) => {
const { size } = await fileInfo(audiofile);
let range = req.headers.range;
if(range) {
console.log(range);
let [start, end] = range.replace(/bytes=/, '').split('-');
start = parseInt(start, 10);
end = end ? parseInt(end, 10) : size - 1;
res.writeHead(206, {
'Content-Range': `bytes ${start}-${end}/${size}`,
'Accept-Ranges': 'bytes',
'Content-Type': 'audio/mpeg',
'Content-Length': (end-start) + 1,
});
createReadStream(audiofile, { start, end }).pipe(res);
}
else {
console.log(range);
res.writeHead(200, {'Content-Length': size,'Content-Type':'audio/mpeg'});
createReadStream(audiofile).pipe(res);
}
}).listen(3000);
Чего мне не хватает, неправильный порядок заголовков или как сохранить значение диапазона?Что-то подсказывает мне, что это будет переписать код, поскольку я предполагаю, что работа с видео - это одно, а аудио - другое.