170 похожих чатов

Как синхронить сообщения которые хранятся на фронте с базой? если

их допустим 5000.
приложение типа телеги. храню сообщения на локалхосте
допустим юзер вышел, и когда зашел в базе что-то из этих 5000 итемов удалилось/добавилось
как это засинхронить максимально эффективно, сам принцип?

8 ответов

15 просмотров

С помощью вэбсокета синхронь, например. Если не можешь изменить текущее (имхо, не совсем верное) флоу З.ы. почитай https://jerickson.net/four-ways-keep-backend-data-synced-frontend/

4R7- Автор вопроса
Joe Beretta
С помощью вэбсокета синхронь, например. Если не мо...

а какое верное? вроде у телеги подобное

4R7
а какое верное? вроде у телеги подобное

Ни в коем случае)) У телеги чуть ли на каждый чих твой идет синхронизация) Даже на то, что я сейчас печатаю, каждые н миллисекунд идет запрос на сервер, а всем остальным онлайн участникам группы рассылается апдейты(так называют в самой телеге "запросы сервера на клиент"). А мне (моим остальным устройствам) летит апдейт о новом драфте. Так что телега синхронит практически мгновенно каждое твое действие

Если не веришь, глянь их доку. core.telegram.org/methods И увидишь, что есть методы даже на самые мельчайшие действия. А так быстро, потому что там аля вэбсокет (если говорить более распространенным аналогом) - 2 сокет соединения открываются, в 1м - клиент шлет запросы на получение/изменение данных (считай как хттп запросы), а во 2м - сервер отправляет изменения в активные(подключенные соединения)

4R7- Автор вопроса
Joe Beretta
Если не веришь, глянь их доку. core.telegram.org/m...

понятно что происходит синхра. непонятно как 1. ка кпроисходит синхра? в базе в группе лежит 5000 сообщений юзер долго не заходил, половину сообщений из кучи удалили рандомно и добавили еще 10000. он что перекачивает новую дату?а если сообщений 100.000 ? 2. при обрыве сети у юзера , если юзер все пишет в локалхост сообщения добавляются но не отправляются, когда сеть восстаналивается, приходят сообщения и отправляются его сообщения, как оно синхронится, вставляет сообщения на свои места как в базе?

1. У них есть система апдейтов, в которых вся инфа и хранится, если ты долго не заходил, то есть запрос который говорит "дай мне все что я пропустил". То же самое, как ты ленту вк листаешь (листаешь с места, где в последний раз был) 2. Если был оффлайн, да, если это вэб - то хранит в локалсторе(если прил, то в sqlite каком-то) и после того как соединение появится, отправляешь. Но ни в коем случае не все комом, каждый - отдельно. Это быстро и атомарно

4R7
нихера не понятно...

Ну глянь ссыль который кинул тебе, если хочешь изучить как у них устроено

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

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

30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
в JclConsole объявлено так: function CtrlHandler(CtrlType: DWORD): BOOL; stdcall; - где ваше объявление с stdcall? у вас на картинке нет stdcall
Karagy
8
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
program test; {$mode delphi} procedure proc(v: int32); overload; begin end; procedure proc(v: int64); overload; begin end; var x: uint64; begin proc(x); end. Уж не знаю...
notme
6
Карта сайта