Nodejs - HTTP Range Support / Частичная загрузка файлов - PullRequest
7 голосов
/ 02 января 2012

Я создаю музыкальное веб-приложение для потоковой передачи MP3, которые я храню в MongoDB (GridFS).

Мой вопрос: Как добавить поддержку диапазона http, чтобы я мог начать потоковую передачу аудиофайла 1 /2 пути без необходимости ожидания буфера.

Я знаю, что GridFS поддерживает чтение для байтов X - байтов X, поэтому в основном мне просто нужно знать, как заставить nodejs понять, что ему нужны только байты X -X.

Спасибо!

1 Ответ

9 голосов
/ 02 января 2012

Клиент отправит заголовок Range с указанием абсолютного начального и конечного байтов, за которым следует общая длина файла или '*'.

Примеры:

  . The first 500 bytes:
   bytes 0-499/1234

  . The second 500 bytes:
   bytes 500-999/1234

  . All except for the first 500 bytes:
   bytes 500-1233/1234

  . The last 500 bytes:
   bytes 734-1233/1234

Затем сервер долженвернуть код ответа 206 (Частичное содержимое), а Content-Length должен быть только объемом передаваемых данных.

В случае неправильного диапазона сервер должен либо вернуть 416 (Запрошенный диапазонне удовлетворяется) с полем Content-Range bytes */* или должен игнорировать запрос диапазона и возвращать 200 со всем телом файла.

Сервер также должен отправить поле Accept-Ranges сзначение принятой единицы измерения диапазона, в данном случае bytes.Но единицей диапазона может быть любая произвольная единица измерения.

Источник: rfc2616

...