У меня есть сервер для поддержки приложения для обмена мгновенными сообщениями.
Postgres для холодного хранения и перенаправления для кэша (и для других целей использования для определенных функций, таких как онлайн-статус). Кэш redis - это просто последние X-сообщения в любом заданном диалоге.
, чтобы пользователи могли просматривать чаты в автономном режиме, я планирую разместить на устройствах базу данных SQLite.
Если пользователь онлайн - тогда я просто пропускаю сообщения через WebSocket, а затем добавляю сообщение в базу данных SQLite.
Но если принимающий пользователь отключен:
использовать ли что-то вроде FCM для доставки КАЖДОГО сообщения, которое они отправляют, чтобы сохранить его в SQLite в фоновом режиме?
или следует хранить их сообщение на сервере, а затем, когда пользователь снова подключен, сервер передает все новые сообщения пользователю? В этом случае, однако, что, если количество новых сообщений больше, чем X, хранящийся в кэше redis - мне также нужно знать, чтобы получать дополнительные сообщения из postgres. Как это можно эффективно сделать?