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

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

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

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

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

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

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

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

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

1 ответов

51 просмотр

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

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

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

Привет, такой вопросик появился кажется ли вам что Rust слишком сложный/строгий для высокоуровневого программирования и слишком "безопасный"/строгий для низкоуровневого?
Крокант
10
Всем привет. Хотел бы написать для себя свою ос. Причины: 1) нужен опыт в чем-то 2) будет меньше весить 3) свое, но там будут свои задумки Я понимаю что нужно писать для всег...
Shadow Akira
18
А какие существуют способы обработки ошибок выделения памяти в ядре? Т.е., допустим, есть функция, которая возвращает адрес свободной страницы в физической памяти и диапазон в...
disba1ancer
51
Всем привет! Скажите, никто не пытался уменьшить размер процесса ssl, которые ассоциируется с открытым соединением (не помню точное название этого процесса, но там была какая-...
Алексей
20
5? да там все 10
Boris Vinogradov
12
Через бот апи возможно получить ID стикерпака? Не ссылку.
Vexylon [АФК до 09.09]
5
Why would I rent an account if it’s not mine?
Snr Engineer
3
У меня вопрос: для разработки современных (не учебных) ОС, лучше использовать уже имеющиеся архитектурные решения или нужно будет разрабатывать что-то принципиально новое?
Alexander
5
Всем привет. Запускаю snmp_server вызовом snmp:start() и получаю вот это: {bad_return, {{snmp_app,start,[normal,[]]}, {'EXIT', {{badmatch, {error, {{shutdown, {failed_to_sta...
Δημήτηρ
9
@berkus @diaevd как бы вы сделали dependency injection но без шаблонов?
Boris Vinogradov
5
Карта сайта