Есть простая форма, в которой много полей и данных. Сделано с AngularJS. Пользователь может зайти и изменить данные: добавить новые поля или удалить старые.
Требование: сделать без кнопки "сохранить", то есть производить автоматическое сохранение при изменении поля. Существует вероятность, что над формой будут работать несколько пользователей параллельно.
Как сделать это правильно?
Сейчас, как только происходит изменение формы, то посылается post request, и данные сохраняются. Но как тянуть данные при их изменении автоматически? Я не могу каждые X секунд проверять, изменились ли поля. Получится слишком много запросов на сервер. Что думаете?
Ответ
Если вам нужно поддерживать старые браузеры, то придётся делать регулярные запросы к серверу, здесь особо без вариантов.
Современные браузеры поддерживают веб-сокеты: постоянное полнодуплексное соединение браузера с веб-сервером. Пока соединение открыто, клиент и сервер могут посылать друг другу сообщения.
Сервер может подписаться на обновление данных в базе и рассылать уведомления всем подключенным клиентам по мере необходимости. С точки зрения GUI понадобится дополнительная работа: как уведомлять пользователя, как поступать в случае конфликтов (молча перезаписывать, перезаписывать с подтверждением, предлагать "мержить" и т. п.).
Уровень поддержки в принципе нормальный: http://caniuse.com/#feat=websockets (особенно если вы можете повлиять на то, что стоит у клиента).
Комментариев нет:
Отправить комментарий