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

Здравствуйте! Разрабатываю проект на Vue, одним из требований является работа

в оффлайн-режиме.
Поясню - приложение получает от бэка данные, юзер имеет возможность с ними работать, даже в случае если он с планшетом оказался в зоне где нет связи(например, в лифте). И как только соединение восстановилось, все изменения сделанные в оффлайне должны синхронизироваться с бэком и не потеряться.

Есть несколько не очень понятных мне моментов, которые хотелось бы уточнить:
1) Данные от бэка нужно кэшировать на клиенте. Пока склоняюсь к IndexedDB. Подойдет ли она к этой задаче, или есть что-то более оптимальное?
2) Нужно динамически отлавливать статус соединения. Достаточно ли здесь будет navigator.onLine? Пока натыкался на противоречивую информацию, что этому свойству не стоит доверять. А из альтернатив пока представляется раз в N секунд делать xhr, но мне это кажется не очень хорошим решением.
3) Как правильно организовать механизм актуализации данных в оффлайне? Создавать некое временное хранилище изменений в памяти, и по восстановлению соединения пушить это в IDB/бэкенд?
4) Данные могут изменяться так же внешними системами, а приложение должно их своевременно актуализировать. Пока я представляю это так, что бэк через eventSource будет пушить во фронт обновления, а клиент на них подписывается и обновляет данные в IDB -> отрисовывает на UI изменения.

p.s. извиняюсь если вопросы глупые, ранее похожих задач не решал. Если что-то неясно сформулировал - уточню.

4 ответов

9 просмотров

по поводу onLine не подскажу, но по поводу сохранения данных на фронте, действительно можно использовать indexeddb, с плагином dexie. А обновление данных после подключение можно организовать отлавливая ошибки в interceptors (axios), и ложа нужные запросы в массив, который после подключения будет последовательно отправлено

blessu- Автор вопроса
Kirill Tkachenko
по поводу onLine не подскажу, но по поводу сохране...

Про dexie тоже почитал, выглядит интересно + вроде даже есть поддержка observables. По обновлению получается, что нужно будет проверять, если запрос прошел(соединение восстановилось) то следом нужно еще отправить "отложенные" (запросы если таковые были)?

blessu
Про dexie тоже почитал, выглядит интересно + вроде...

да, но должен сказать что indexeddb не самая удобная штука (судя по моему опыту) у вас может быть по другому, так как у всех задачи разные

blessu- Автор вопроса
Kirill Tkachenko
да, но должен сказать что indexeddb не самая удобн...

я пока однозначно не могу сказать, т.к. ее ранее не юзал. Пока сделал миниверсию просто с хранением/получением данных из нее, вроде работает. Сейчас хочу с нативного апи на декси перейти, разбираюсь с доками

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

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

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
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...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
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
Карта сайта