Асинхронный клиентский процесс JavaScript для общения с сервером - PullRequest
1 голос
/ 02 мая 2011

Я подумываю о разработке веб-приложения с возможностью автономной работы.Я рассматриваю форматирование всех постбэков клиентских форм как объектов JSON и пишу их напрямую в HTML5 LocalStorage при обратной передаче формы.Затем у меня будет отдельный процесс, который асинхронно опрашивает LocalStorage для записей JSON и отправляет их на сервер.Этот процесс синхронизации сервера не будет иметь никакого контекста пользовательского интерфейса.Реальный пользовательский интерфейс может быть очень отзывчивым.(Я буду использовать файлы манифеста кеша для решения других офлайн-проблем).

Это разумный план и какова будет лучшая техническая реализация асинхронного пост-процесса JSON?(возможно таймер, опрашивая LocalStorage и проверяя соединение с сервером каждую секунду?) Есть ли лучший способ реализовать синхронизацию сервера (если бы я реализовывал это на сервере, я написал бы сервис - есть ли эквивалентный механизм javascript?)

Спасибо.

Ответы [ 2 ]

0 голосов
/ 03 мая 2011

В конце я просто использовал простой setInterval, как показано ниже:

setInterval("SyncLocalStorageToServer()", 4000); // Loop at 4 second intervals

, которая затем вызывает функцию, которая зацикливается на записях localStorage, отправляя каждую по очереди на сервер.

0 голосов
/ 02 мая 2011

В прошлом году я провел некоторое тестирование, чтобы запустить наше приложение в автономном режиме, только для браузеров HTML5.

Приложение основано на службах JSON и отображается на стороне клиента с использованием нашей библиотеки lib: pure.js .Вы получаете очень отзывчивое приложение, использующее аналогичную архитектуру, даже без автономного доступа.

Если произошел сбой вызова службы JSON, он предположил, что мы были в автономном режиме, и вместо этого использовал локальное хранилище.Когда вызов был сделан онлайн, он проверял состояние автономной очереди и синхронизировал его при необходимости.

Но затем я начал реплицировать некоторую логику проверки сервера на клиенте.И обнаружил, что хранящиеся данные не были зашифрованы.Даже с чем-то вроде javascrypt вам нужен ключ где-то или установить пароль и т. Д.Тогда что вы держите клиенту?Все?Последние просмотренные товары?Как справиться с коллизиями при изменении данных?

Моя ставка сделана на современные мобильные сети, которые в целом онлайн, поэтому проще заставить приложение работать на мобильном телефоне, а не пытаться отключить его от сети.Сейчас мы прекратили работу в автономном режиме.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...