Как правильно реализовать список с обновляющимися в реальном времени данными?

Допустим, приложение загружает список элементов (кол-во заранее неизвестно) и отображает данные о них в RecyclerView. После загрузки, данные о конкретных элементах могут измениться и нужно всем клиентам как можно быстрее обновить информацию об изменённых элементах. Собственно вопрос -- как наиболее эффективно это реализовать? Существует ли какой пример или паттерн решения этой задачи с использованием WebSocket или long polling? Прошу направить в нужное направление.
  • Вопрос задан
  • 454 просмотра
Решения вопроса 2
DmitriyEntelis
@DmitriyEntelis
Думаю за деньги
Мы делали это так:

Любое изменение/добавление/удаление данных создает в базе запись с неразрывным id.

Методы апи:
1) возвращает все объекты данных целиком + id последней записи об изменениях
2) метод отдающий записи изменений с id в указанном интервале.
3) сокет в котором в realtime приходят записи об изменениях. (делали на node.js + socket.io, там это из коробки реализуется очень быстро и просто)

Логика приложения:
Скачиваем все объекты из метода [1].
Начинаем слушать сокет [3], если нам приходит запись с id > last_id+1, запрашиваем разницу из метода [2]
Ответ написан
Комментировать
xmoonlight
@xmoonlight
https://sitecoder.blogspot.com
1. Реализуем через WebSocket и подпиской на канал реал-тайм мониторинга.
2. При изменении - пуляем в канал ID-шник(и) элемента(-ов) и список его(их) новых значений в json-формате в виде ЕДИНОГО пакета.
3. Клиенты принимают пакет и обновляют нужные данные.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@davidnum95
Можно попробовать Firebase. Он как раз решает поставленную задачу.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы