Я работаю над API-интерфейсом для воспроизведения mp3-аудио и потоков в мое приложение.Я провел некоторый тест, чтобы узнать, как будет выглядеть поведение, если в конечном итоге пользователь получит недостаток пропускной способности.Таким образом, играя на версии приложения для Android, если я отключаю интернет по телефону (это имитирует пропускную способность интернета с низкой пропускной способностью или даже временную потерю), после поиска трека, пока песня не буферизуется, музыка не останавливается, а затем, когда я включаю интернет,музыка возобновляется в текущее время.
Я глубоко погрузился, чтобы найти решение, и понял, что, возможно, проблема может быть на headers
.Я протестировал приведенный ниже код, удалив код первого if block
и запустив его, как я и ожидал, но если пользователь получит низкую полосу пропускания, проигрыватель остановится и не будет пытаться играть вместо него.
const range = req.headers.range;
if (range !== undefined) {
const parts = range.replace(/bytes=/, "").split("-");
const partial_start = parts[0];
const partial_end = parts[1];
if ((isNaN(partial_start) && partial_start.length > 1) || (isNaN(partial_end) && partial_end.length > 1)) {
return res.sendStatus(500);
}
const start = parseInt(partial_start, 10);
const end = partial_end ? parseInt(partial_end, 10) : fileSize - 1;
const content_length = (end - start) + 1;
res.status(206).header({
'Content-Type': 'audio/mpeg',
'Content-Length': content_length,
'Content-Range': "bytes " + start + "-" + end + "/" + fileSize
});
} else {
res.header({
'Content-Type': 'audio/mpeg',
'Content-Length': fileSize
});
}
request(urlmp3).pipe(res);
Что-то мне не хватает?