У меня вопрос на алгоритм есть чатик при подключении клиента, бекенд выгружает

ему последние 10 сообщений

клиент, долистав до верха этих 10 сообщений, запрашивает "дай мне еще 10 сообщений до %ID%"

все бы ничего, но есть функционал цитат, ну как в телеге, над ответом отрисовывается плашка с цитируемым сообщением

вот как так сделать, чтобы при подключении выгружались последние 10 сообщений, и если среди них есть ответы - то они отрисовывали и цитаты?

при этом есть функционал, как в телеге, можно кликнуть на цитату и отправиться к сообщению

всё что я придумал, щас выгружаются 10 последних сообщений, и если среди них есть ответы, то и первые вопросы выгружаются, то есть [2,5,.... 20-30]
но тогда появляется баг, что клиент, долистав наверх пошлет сообщение, не "дай мне 10 сообщений меньше 20", а "10 сообщений меньше 2", и поэтому сервер не выгрузит 3,4,6,7 и так далее, клиент о них ничего не узнает

протокол на бекенде менять не очень хочется, клиенты разлетелись по вебу, мобилкам и прочему, но видимо придется

какие-нибудь идеи? всё что я придумал, не лишено багов 😄

1 ответов

20 просмотров

Эту проблему раньше решал вк. Где-то была статья, как они хранят сообщения. Попробуй в их направлении поработать. А так, думаю, только дополнительными запросами к БД придётся делать.

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

Обсуждают сегодня

Так а кто может спарсить всех участников чата? Идишники
Magic
18
да пофиг на капчу зашел в чат и молчишь при этом ты нонейм? пошел вон
Magic
17
Гайз, а как отправлять с вейпора пуши на андроид? ) Меня вот осенило )))
Serg
6
Как думаете, будут макбуки на WWDC?
Dmytro
6
Привет, кто может сделать юзербота с апи? Задачи: - создавать группы - создавать каналы - задавать для созданных каналов аватарку или эмоджи, имя группы - добавлять в группы...
Lencore
13
Всем доброго вечера! Хочу поделиться своим злоключением с человеком, который, как оказалось сюда тоже скидывал свое резюме. Жаль, что я вашу группу не нашел раньше… человек ки...
Роман Ахмедзянов
4
Включил эту опцию. Осталось два варнинга из всех (все одинаковые - a term is constructed, but never used) lager:warning("~p is not a map (~s:~s:~s)", [Body, Class, Sub, Type]...
Δημήτηρ
3
у меня такой вопрос про память в x86 возник, может кто пояснить?.. у процессора есть (как минимум) 3 типа адресов (названия "п1", "п2", "п3" --- мои, чтобы проще было дальше)...
Toideng
10
Нужно магазин с тильды на опен кат перенести Есть кто умеет? В лс
Magic
6
Я хочу запустить свой проект в тг. Что-то между пирамидой и майнилкой. Еще подобного ничего не было. Уникальная идея. Нужен именно не бот, а приложение. С ввод, выводом тон...
Павел А.
6
Карта сайта