Как правильно реализовать список с обновляющимися в реальном времени данными?
Допустим, приложение загружает список элементов (кол-во заранее неизвестно) и отображает данные о них в RecyclerView. После загрузки, данные о конкретных элементах могут измениться и нужно всем клиентам как можно быстрее обновить информацию об изменённых элементах. Собственно вопрос -- как наиболее эффективно это реализовать? Существует ли какой пример или паттерн решения этой задачи с использованием WebSocket или long polling? Прошу направить в нужное направление.
Любое изменение/добавление/удаление данных создает в базе запись с неразрывным id.
Методы апи:
1) возвращает все объекты данных целиком + id последней записи об изменениях
2) метод отдающий записи изменений с id в указанном интервале.
3) сокет в котором в realtime приходят записи об изменениях. (делали на node.js + socket.io, там это из коробки реализуется очень быстро и просто)
Логика приложения:
Скачиваем все объекты из метода [1].
Начинаем слушать сокет [3], если нам приходит запись с id > last_id+1, запрашиваем разницу из метода [2]
1. Реализуем через WebSocket и подпиской на канал реал-тайм мониторинга.
2. При изменении - пуляем в канал ID-шник(и) элемента(-ов) и список его(их) новых значений в json-формате в виде ЕДИНОГО пакета.
3. Клиенты принимают пакет и обновляют нужные данные.