Мне нужно написать веб-приложение, которое может передавать аудиофайлы клиентам.Сложность в том, что сервер должен управлять потоковой передачей , поэтому я не могу передать простой mp3 (или что-то в этом роде) клиенту как «application / octet-stream».Основные требования:
- Каждый клиент может прослушать каждый трек только один раз.Если я дам клиентам mp3, они могут просто скачать его и воспроизвести столько раз, сколько захотят.Клиенты могут воспроизводить дорожку более одного раза, но в этом случае только сервер может подтвердить это.
- Потоковая передача должна быть непрерывной, поэтому после того, как клиент инициировал «запуск»,они не могут пропускать вперед или возвращаться в дорожку.
- Мы не поддерживаем и не будем поддерживать поиск и воспроизведение, поэтому решение должно соответствовать только этому сценарию, оно не обязательно должно быть универсальным, но онодолжен быть очень хорошо масштабируемым.
Текущая настройка заключается в том, что у нас есть клиентское приложение Angular 6 и серверная часть Asp.Net Core 2.1 с SignalR для связи в реальном времени (в настоящее время для другихтолько варианты использования).Мои вопросы:
Новый SignalR имеет некоторые возможности для «потоковой передачи данных» (https://docs.microsoft.com/en-us/aspnet/core/signalr/streaming?view=aspnetcore-2.1), но я не нашел ничего, что доказывало бы, что это может справиться с моим сценарием (мы будему меня большие нагрузки, может быть, даже тысячи по-настоящему параллельных прослушиваний.) Предназначена ли эта функция потоковой передачи для этого?
Если SignalR не будет правильным выбором, кто-то может направить меня в правильном направлении? Оптимальное решение также будетоставайтесь в стеке ядра .net.
- Как клиент может воспроизводить поток? Я не знаком с аудиокодеками. Если я просто разбил свой трек на 100 или 1000 фрагментов и отправил первыйодин для клиента, он уже воспроизводим?
Заранее спасибо.
edit: клиент находится на компьютерах в частной локальной сети. У них не будет доступа к Интернету (поэтому они не могут использовать, например, инструменты записи на основе флэш-памяти с других сайтов.) Они также не будут иметь повышенных прав на компьютер, поэтому они не могут устанавливать инструменты записи.Не нужно быть пуленепробиваемым, но нам нужна некоторая защита от простых и простых «атак».