Серверное приложение должно быть написано на NodeJS и использовать фреймворк express (хотя это не обязательно, нужно лишь придерживать формат)
Описание, настройка и формат написаны тут
Принцип обработки:
- клиент загружает данные на адрес POST /upload. Данные могут быть загружены «порциями» (определенная длина байтов). В этом случаи информация сохраняется с добавление данных в файл, который уже был создан ранее (информация о позиции с которой нужна начинать добавление указано в теле запроса, параметр body).
- сервер сохраняет эти данные во временную папку. Файл имеет расширение *.bkp. Наименование файла берется из тела запроса, параметр key
- после удачного сохранения данных клиент отправляет запрос на сервер GET /sync?key=[name] , что приводит к запуску обработки пакета
- по завершению обработки клиенту возвращается соответствующий результат, после чего начинается скачивание ответного пакета *.pkg. Данный пакет формируется в результате обработки и именуются также, как и первый, только имеет другое расширение
- GET /download?key=test&BLOCK_SIZE=4096&position=0 скачивание так же, как и загрузка может происходить порциями. Информация какой размер блока и с какой позиции нужно производить чтение указывается в запросе
- после завершения загрузки на клиенте начинается обработка данных и в конце этого процесса серверу отправляется еще один запрос GET /remove?key=test на удаление временных данных (файлов с расширениями *.bkp и *.pkg)
Исходный код
git clone git://git.appcode.pw/sync-transfer.git
npm install