Carduelis
@Carduelis
Web-developer, front-end, js, less

Как реализовать отложенную выгрузку данных на сервер из phonegap?

Есть одно one-page js application, в котором все работает по ajax. Загрузка из данных БД происходит по мере пользования с системой. Как правильно реализовать отгрузку данных на сервер, если связь может пропадать на долгое время? Вся система уже написана и успешно отправляет ajax-запросами на сервер данные, в случае обрыва соединения пишет ошибку.

В голову приходит следующее:
1) Установить бесконечный тайм-аут отправки. Тут есть большая проблема - если телефон перезагрузить, то сессию уже не восстановишь. Нужна какая-то буферная зона.

2) Отправлять ajax - запросы напрямую, когда соединение есть, а когда его нет - включать специальный оффлайн-режим (перекрашивая фон в красный цвет), а дальше как-то прерывать ajax-запрос, отправляя данные в какую-то буферную зону, данные из которой бы отправились, как устройство бы соединилось с сервером.

Как грамотно реализовать буферную зону на уже готовых ajax-запросах?

Спасибо за понимание. Вопрос может кому-то показаться глупым, но все же.
  • Вопрос задан
  • 177 просмотров
Решения вопроса 1
Denormalization
@Denormalization
Обычно это решают накоплением запросов в локальном хранилище, и затем отсылкой их на сервер(желательно групповой).

В вашем случае нужно сделать сервис прослойку между Ajax и приложением, который будет получать запросы на отправку и:
- Проверять есть ли сеть
- Если сеть есть -> отправлять запрос
- Если сети нету -> сохранять данные запроса в localStorage

По таймеру, или при любом другом событии, можно проверять есть ли отложенные данные в localStorage, и отсылать их на сервер (сразу пачкой).
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
КРАФТТЕК Санкт-Петербург
от 60 000 до 80 000 ₽
summer Ярославль
от 100 000 до 140 000 ₽
19 апр. 2024, в 17:06
15000 руб./за проект
19 апр. 2024, в 16:53
1000 руб./за проект
19 апр. 2024, в 16:45
5000 руб./за проект