Асинхронный клиентский процесс JavaScript для общения с сервером
Я рассматриваю возможность разработки веб-приложения с возможностью автономного режима. Я рассматриваю возможность форматирования всех обратных ссылок клиентских форм как объектов JSON и их прямой записи в HTML5 LocalStorage при обратной передаче формы. Затем у меня будет отдельный процесс, который асинхронно опрашивает LocalStorage для записей JSON и отправляет их на сервер. Этот процесс синхронизации сервера не будет иметь никакого контекста пользовательского интерфейса. Реальный пользовательский интерфейс может быть очень отзывчивым. (Я буду использовать файлы манифеста кеша для решения других офлайн-проблем).
Это разумный план, и какова будет лучшая техническая реализация асинхронного пост-процесса JSON? (возможно таймер, опрашивая LocalStorage и проверяя соединение с сервером каждую секунду?) Есть ли лучший способ реализовать синхронизацию с сервером (если бы я реализовывал это на сервере, я написал бы сервис - есть ли эквивалентный механизм javascript?)
Благодарю.
2 ответа
В конце я просто использовал простой setInterval, как показано ниже:
setInterval("SyncLocalStorageToServer()", 4000); // Loop at 4 second intervals
которая затем вызывает функцию, которая зацикливается на записях localStorage, отправляя каждую по очереди на сервер.
В прошлом году я провел некоторое тестирование, чтобы запустить наше приложение в автономном режиме, только для браузеров HTML5.
Приложение основано на службах JSON и отображается на стороне клиента с использованием нашего lib: pure.js. Вы получаете очень отзывчивое приложение, использующее аналогичную архитектуру, даже без автономного доступа.
Если вызов службы JSON не удался, он предполагал, что мы были в автономном режиме, и вместо этого использовал локальное хранилище.
Когда вызов был сделан онлайн, он проверил состояние автономной очереди и синхронизировал его при необходимости.
Но затем я начал копировать некоторую логику проверки сервера на клиенте. И обнаружил, что хранящиеся данные не были зашифрованы. Даже с чем-то вроде javascrypt вам нужен ключ где-то или установить пароль и т. Д.
Тогда что вы держите клиенту? Все? Последние просмотренные товары? Как вы справляетесь с конфликтами изменений данных?
Я держу пари на современных мобильных сетях, которые в целом онлайн, поэтому проще заставить приложение работать на мобильном телефоне, а не пытаться отключить его от сети.
Сейчас мы прекратили работу в автономном режиме.