Answer the question
In order to leave comments, you need to log in
Answer the question
In order to leave comments, you need to log in
Как ни крути, интернет на мобилке - он практически всегда слабый. Надо уметь с этим жить. Для этого многие реализуют "докачку": при обнаружении разрыва соединения клиент спрашивает у сервера "на чем остановились" и продолжает загрузку видео с указанной точки. Нужна поддержка и на клиенте, и на сервере.
Вот эти ребята предлагают стандартизированный протокол с кучей библиотек по обе стороны интернета. Google, Vimeo реализуют "догрузку" по-своему. Есть еще resumable.js, но он работает с блоками и на мой взгляд слишком ненадежен из-за своей сложности.
https://www.resilio.com/ (бывший bittorrent sync)
или его аналоги
https://syncthing.net/
От слабого интернета не спасает ничего, кроме сильного интернета.
А теперь без шуток. В народе под слабым интернетом понимают медленный и ненадежный. Т.е. низкие скорости, ошибки передачи и обрывы в порядке вещей. Обычно такое на медленных GPRS/2G/3G соединениях. Встречается также на старых телефонных линиях, когда ADSL частенько падает.
В таких случаях загрузка видео организуется простым и надежным методом - разбивкой на части и подтверждением целостности частей.
Грубо говоря, берете файл, отрезаете от него фрагментик в 64кБ и отправляете на сервер. Если сервер за разумное время не ответил (например за минуту), рвете соединение и пытаетесь снова. Вместе с кусочком отправляете md5 этого кусочка. Сервер при приеме кусочка точно также считает md5. Если суммы совпадают, то тогда фрагментик записывается в нужное место файла.
Когда отправляются фрагменты, каждый пакет несет в себе информацию:
Первый фрагмент дополнительно несет в себе информацию
Сервер обязан отслеживать какие части файла были загружены.
При таком дизайне клиент может работать при любой скорости сети и загрузка будет достаточно надежной.
Кроме этого, клиент может подстраиваться под скорость и адаптировать размер фрагментов.
Сервер должен быть достаточно умным, чтобы контролировать гонки и уметь закрывать открытые зависшие соединения.
Размер фрагментов должен быть регламентирован для предотвращения DOS атак.
Кроме этого, в пакеты с данными неплохо бы добавлять какую-нибудь подпись и соединение должно быть авторизованным.
Что такое "слабый" в вашем понимании? Если медленный, ну... сменить провайдера или забить и просто ждать выгрузки дольше. Если "падучий", отправить жалобу провайдеру, проверить/заменить оборудование, пользоваться сервисами поддерживающими дозакачку - те же облачные клиенты, я.диск, диск.google, mega или более-менее современные браузеры.
Didn't find what you were looking for?
Ask your questionAsk a Question
731 491 924 answers to any question