Проверка состояния синхронизации клиента и сервера при использовании Ajax - PullRequest
2 голосов
/ 12 марта 2012

У меня есть веб-приложение с большой формой заказа: 300+ полей для ввода суммы товара, каждое с кнопкой увеличения или уменьшения суммы. Каждое изменение в поле ввода отправляется на сервер через Ajax. Кнопки «деблокированы»: клики собираются и новая сумма отправляется через 200 мс после последнего клика. Теперь кажется, что некоторые запросы не выполняются, возможно, из-за плохих условий в сети, но это также может быть проблема с сервером. Это означает, что отображаемая сумма и сумма, хранящаяся на сервере, отличаются. Какие стратегии я могу использовать для синхронизации клиента и сервера ? На данный момент вижу два варианта:

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

Любые другие идеи или рекомендации?

1 Ответ

2 голосов
/ 16 марта 2012

Вы можете поддерживать ChangeLog (список идентификаторов записей, которые должны быть синхронизированы с сервером) на стороне клиента (только идентификаторы, а не сама запись).

Затем во время процесса синхронизации убедитесь, что сервер отправляет обратно подтверждение успешной обработки записи.

В случае успеха удалите запись из ChangeLog. Если нет, он остается и будет отправлен повторно во время следующего процесса синхронизации.

Этот протокол используется стандартом SyncML и может применяться к вашему делу.

...