данных Проблемы вы описываете в значительной степени то же самое проблемы, с которыми вам приходится иметь дело с потоками видео, которые вы, вероятно, уже знаете. Ключевыми протоколами HTTP, поддерживающими HTTP, являются HLS (Apple), SmoothStreaming (Microsoft), HDS (Adobe) и MPEG-DASH (открытый протокол, но новый).
При рассмотрении потоковой передачи видео также важно понять, являются ли ваши потоки более похожими на «живые» потоки или «статический» контент - первый генерируется «на лету», и любая часть реального потока может быть доступна только для набор времени, в то время как последний хранится на сервере в полном объеме, и вообще любая часть доступна в любое время (пока контент не будет удален). Как вы проигрываете и воспроизводите их, они отличаются друг от друга.
Возможно, вы можете просто повторно использовать один из вышеперечисленных протоколов потоковой передачи видео, обернув ваши данные, как если бы это было видео (или, возможно, это даже видео), и реализовать свой собственный клиент на принимающей стороне.
В качестве альтернативы, эти протоколы могут служить хорошей отправной точкой, если вы хотите создать свой собственный более простой протокол - существует несколько потоков потокового сервера с открытым исходным кодом, которые вы можете использовать для идей или даже приспосабливаться к вашим потребностям, если это похоже на разумный маршрут :
потокового видео является довольно сложным, как вы, возможно, уже известно, но если ваши случаи использования проще, вы можете быть в состоянии игнорировать или удалять большую часть сложности - например, вам могут не потребоваться поисковые, многоформатные и потоковые потоки, сопровождающие потоки (для субтитров и т. д.). Возможность упростить подобное может оправдать усилия по модификации одного из вышеперечисленных для ваших нужд, если вы не можете использовать их из коробки.
Конечная точка - протоколы потоковой передачи видео и аудио, как правило, имеют встроенный способ работы с задержанными или потерянными пакетами. В зависимости от вашего приложения они могут быть неприменимы к вам, поэтому вам следует внимательно изучить этот аспект, если вы повторно используете протокол передачи видео или звука или сервер. Например, аудиоклиенты обычно терпимы к небольшому количеству потерь пакетов и, как правило, отбрасывают задержанные пакеты, а не приостанавливают аудио (пакеты, полученные за пределами окна «буфер дрожания»). Если ваше приложение не может терпеть потерю пакетов, вам необходимо внимательно изучить основное решение и протокол, чтобы убедиться, что он действительно соответствует вашим потребностям во всех сетевых условиях.
Благодарим за это. Когда я изначально искал решения, потоковые видео-протоколы продолжали появляться. Для нашего конкретного решения точность в потоке данных довольно важна (что более важно, чем абсолютная производительность), поэтому более медленные протоколы могут оказаться не лучшим. Тем не менее, есть некоторые идеи, в которых мы должны уметь брать деньги. – turtlemonvh