Нужен пример использования для потокового ответа в ChicagoBoss
API контроллера ChicageBoss имеет это
{поток, генератор:: функция (), Acc0}
Потоковая передача ответа клиенту с использованием чанкованной кодировки HTTP. Для каждого блока функции Generator передается аккумулятор (изначально Acc0), который должен возвращать либо {output, Data, Acc1}, либо done.
Мне интересно, каков вариант использования для этого? Есть и другие, такие как Json, выход. Когда будет это stream
быть полезным?
Может ли кто-нибудь представить пример использования в реальном мире?
1 ответ
Решение
Обслуживание больших файлов для загрузки может быть самым простым вариантом использования.
Можно утверждать, что есть и другие способы обслуживания файлов, чтобы пользователи могли их загружать, но у них могут быть и другие недостатки:
- При потоковой передаче файла вам не нужно читать весь файл в память перед тем, как начать отправлять ответ клиенту. Для небольших файлов вы можете просто прочитать содержимое файла и вернуть его как
{output, BinaryContent, CustomHeader}
, Но это может быть сложно, если вы хотите обслуживать большие файлы, такие как образы дисков. - Люди часто предлагают использовать загружаемые файлы в качестве статических файлов (например, здесь). Однако эти загрузки обходят все контроллеры, что может быть проблемой, если вам нужны такие вещи, как счетчики загрузок или ограничения доступа. Кеширование тоже может быть проблемой.