Как обновить полученные данные в интерфейсе, когда данные обновляются в базе данных? - PullRequest
0 голосов
/ 25 июня 2018

Я создаю мобильное приложение, в котором жест «выпадающий» в пользовательском интерфейсе инициирует обновление существующих данных / сообщений (также извлекает новые сообщения, если они есть, но здесь дело не в этом).Сервер не имеет состояния, то есть сеансов нет.

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

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

1 Ответ

0 голосов
/ 25 июня 2018

Есть как минимум 2 способа сделать это

  1. Длинный опрос

    • клиент запрашивает у сервера новую информацию.
    • сервер сохраняет соединение открытым, пока не появятся новые данные для отправки.
    • как только сервер получает данные, он отправляет их клиенту, и соединение закрывается.
    • клиент затем отправляет новый запрос информации.
    • Это непрерывный процесс.
  2. WebSockets

    • Создайте соединение через веб-сокет, оставьте его открытым.
    • Сервер отправляет все обновления по мере их поступления.

Проблемы с обеими ситуациями

  • Может потребоваться значительное количество времени, чтобы иметь готовые к реализации реализации.
  • Оба они потребуют, чтобы сервер был в курсе любых изменений в базе данных. Это может быть сложно
...