Хотел просто перекинуть файл с Android на компьютер. В итоге сделал свой сервис.
Задача выглядела элементарно: отправить файл с телефона на компьютер. Оба устройства рядом, хороший Wi-Fi, браузеры открыты. Но стоило на телефоне перейти к выбору файла, как
омпьютер переставал его видеть. Возвращаюсь на страницу — начинаем знакомство заново.
Я попробовал несколько браузерных сервисов. На моей связке устройств стабильной передачи не получилось. Так появился isend.tech — сервис, в котором хотелось довести до ума именно этот короткий сценарий.
Открыл сайт на двух устройствах — отправил файл
Для использования не нужны регистрация и установка приложения. Открываешь сайт на телефоне и компьютере, выбираешь получателя и отправляешь.
Устройства в одной сети обычно обнаруживаются автоматически. Причём соединение начинает готовиться заранее, ещё до выбора файла.
Если автоматически найти друг друга не получилось, есть знакомство по четырём цифрам. На одном устройстве показывается код, на другом его вводишь, затем подтверждаешь подключение. Код действует две минуты.
После этого браузеры запоминают друг друга и могут находиться даже из разных сетей, в том числе при включённом VPN.
Кроме файлов можно передавать текст и ссылки. Скриншот можно вставить через Ctrl+V или Cmd+V, если браузер поддерживает такую вставку. На телефоне есть кнопка съёмки фото.
Самое трудное оказалось внутри
Нарисовать кнопку «Отправить» оказалось гораздо проще, чем разобраться, почему хорошая домашняя сеть выдаёт несколько мегабайт в секунду, соединение теряется после смены Wi-Fi на мобильный интернет, а большая передача неожиданно останавливается.
В процессе пришлось разбираться с очередями браузера, подтверждениями записи, ограничениями хранилища и восстановлением соединения.
Полученные блоки проверяются и записываются в локальное хранилище браузера. Если связь оборвалась, открытые страницы могут продолжить передачу с сохранённой позиции.
Что происходит с файлами
Когда возможно, устройства передают данные напрямую. Если прямое соединение установить не удаётся, используется ретранслятор.
Передача зашифрована. Содержимое файлов и текста на нашем сервере не сохраняется. Для поиска ошибок собираем технические показатели — без названий файлов, их содержимого и переданного текста. Этот журнал хранится до семи дней.
Проект и серверная инфраструктура базируются в России. Интерфейс доступен на русском и английском.
Что пока важно учитывать
Обе страницы нужно держать открытыми. Если закрыть страницу отправителя, файл понадобится выбрать заново. Полученные файлы сначала попадают в хранилище браузера, у которого есть ограничения по объёму, а затем их можно сохранить в обычную папку.
Скорость зависит от сети и выбранного маршрута. Особенно заметна разница при мобильном интернете и передаче через ретранслятор.
Аналоги у проекта, конечно, есть. Я сосредоточился на предварительном подключении, простом знакомстве устройств и восстановлении после обрывов. Именно эти детали больше всего раздражали меня при использовании подобных инструментов.
Попробовать можно на isend.tech. Сейчас особенно интересны проверки на разных устройствах и сетях: удалось ли подключиться с первого раза, закончилась ли передача и где пришлось разбираться вместо того, чтобы просто отправить файл.