Как организовать потоковую передачу с Amazon S3 на клиент?

Подскажите пожалуйста решение проблемы: есть сервер на node и есть хранилище на Amazon S3. Как организовать (или где про это можно прочитать) следующую схему:
1. Делается запрос на урл, к примеру /watch/video1.mp4
2. Нода ловит запрос и отправляет запрос к Амазону.
3. В ответ возвращается файл (или поток?), который нода отправляет клиенту.
4. Со стороны клиента не видно, что мы используем амазон.
  • Вопрос задан
  • 291 просмотр
Решения вопроса 3
kirill89
@kirill89
Похоже что ваша логика верная за исключением одного момента, судя по документации, амазон не умеет отдавать потоки, но поддерживает заголовок Range в запросе. Вы можете качать контент с сервера амазона чанками по мере надобности, и отдавать эти чанки пользователю через стрим. Вам остается правильно рассчитать размер чанка и момент когда надо начинать качать следующий чанк (иначе памяти не хватит). К счастью writable.write() возвращает false в случае если данные которые вы передали попадут в буфер на отправку, а не будут отправлены сразу.

Если у вас есть более конкретные вопросы, лучше создайте их отдельно.
Ответ написан
zoonman
@zoonman
⋆⋆⋆⋆⋆
На работе был случай с подобным решением, но только вместо видео были документы и картинки. Очень быстро был забит канал под завязку (тоже в облаке Amazon).
В вашем случае лучший вариант использовать оптимизированный для раздачи видео CDN, т.к. при должной посещаемости ширина канала будет исчерпана очень быстро.
Ответ написан
Комментировать
@lutaev23 Автор вопроса
Спасибо всем, нашел примерное решение здесь https://medium.com/@stockholmux/node-js-streams-pr..., буду делать
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
23 нояб. 2024, в 01:31
1000 руб./за проект
23 нояб. 2024, в 00:16
2000 руб./за проект