Я пытаюсь добавить функцию чата в свое приложение, и я пытаюсь прослушать сообщения, которые другой пользователь отправляет после загрузки старых сообщений.
все работает нормально, иМне известно о том факте, что всякий раз, когда добавляется новый документ, база данных Firebase загружает этот документ и добавляет его с кэшированными данными, а затем запускает прослушиватель.
Конечно, в противном случае вы должны добавить ограничение, если пользователи общаются заЧерез несколько часов вы получите сотни или даже тысячи кэшированных сообщений, чтобы показать только одно новое сообщение.
Итак, допустим, мы добавим ограничение в 50 (я объясню почему 50), таким образом, всякий раз, когдадругой пользователь отправляет новое сообщение, мы получаем 1 новое сообщение и 49 кэшированных сообщений, которые мы будем игнорировать.
Хорошо, все нормально работает, как это, но что, если мы переходим в автономный режим, а другой пользователь отправляет сообщения?Если другой пользователь отправляет 10 сообщений, пока мы не в сети, то мы возвращаемся в оперативный режим, слушатель будет активирован, и мы загрузим 10 новых сообщений плюс 40 кэшированных сообщений, а что, если пользователь отправил 55 сообщений, пока мы не в сети?хорошо, когда мы вернемся в онлайн, мы загрузим только 50 новых сообщений и не будем загружать оставшиеся 5 сообщений, это моя проблема.
Я могу просто снять ограничение, но тогда, если у пользователей есть тысячи кэшированных сообщенийМне придется проходить их каждый раз, когда отправляется новое сообщение, которое я считаю действительно неэффективным. Лучшее решение будет заключаться в том, чтобы получать только что добавленные сообщения только при срабатывании слушателя, ограничение в 50, которое я использую сейчас, составляет всего лишьпростой обходной путь, который не работает во всех состояниях.