Синхронизация PWA приложений | JS

Рейтинг: 0Ответов: 1Опубликовано: 28.07.2023

Есть PWA приложение с WebSocket. Пока пользователь в сети, за обновление данных отвечает сокет. С этим проблем нет. Но есть проблема с синхронизацией этих самых данных после потери сети/закрытой вкладки. Если на винде я могу отслеживать сеть, то на том же маке, если судить по консолям, даже при закрытой крышке происходит соединение с сетью время от времени (что уже усложняет задачу). Поэтому правильное определение последнего онлайна уже затрудняется. Для оффлайна вкладки делаю записи в localstorage, а потом по ней синхронизирую.

Может кто-нибудь подсказать, где посмотреть правильный способ синхронизации PWA приложений? Может ссылку на книгу или статьи какие.

Ответы

▲ 0Принят

Для синхронизации данных в PWA приложениях после потери соединения можно использовать следующие подходы:

1)Service Workers - позволяют перехватывать запросы и обращаться к кэшу или IndexedDB в офлайне. Можно реализовать логику синхронизации в service worker.

2)IndexedDB - хранилище данных на клиенте. Можно сохранять данные из сокета в IndexedDB, а затем синхронизировать с сервером.

3)Background Sync API - позволяет отложенную синхронизацию данных когда появится подключение.

4)Паттерн Optimistic UI - отображать локальные изменения сразу, а синхронизировать в фоне.

Полезные ресурсы:

https://developer.mozilla.org/ru/docs/Web/API/Service_Worker_API

https://developers.google.com/web/updates/2015/12/background-sync

https://web.dev/offline-cookbook/

Основные идеи: использовать Service Workers и IndexedDB для офлайн логики, Background Sync для отложенной синхронизации, Optimistic UI чтобы не блокировать интерфейс.

Надеюсь, что поможет