DB y sincronización fuera de línea que funciona en el navegador

Quiero crear una aplicación web que debería funcionar sin conexión.

+----------------+                +---------------+
|  Browser       |                |  Server       |
|                |                |               |
|   +---------+  |                |               |
|   |         |  |                |               |
|   |  GUI    |  |                |               |
|   |         |  |                |               |
|   |         |  |                |  +----------+ |
|   +---------+  |                |  |   DB     | |
|       |        |                |  |          | |
|       |        |                |  |          | |
|   +---------+  |                |  |          | |
|   |   DB    |  |    Internet    |  |          | |
|   |         |  | -------------- |  |          | |
|   |         |  |      https     |  |          | |
|   +---------+  |                |  +----------+ |
+----------------+                +---------------+

Estoy buscando un marco que funcione en los navegadores modernos y que pueda proporcionar un almacenamiento de datos persistente, incluso si el dispositivo está fuera de línea.

Características requeridas:

  • almacenamiento local persistente
  • sincronización automática entre la base de datos en el navegador y en el lado del servidor
  • fuente abierta
  • Debería funcionar al menos en un navegador (solo Chrome es suficiente)
  • no se deben requerir complementos en el navegador

Relacionado:

Respuestas (5)

PouchDB tiene una función de sincronización: https://pouchdb.com/guides/replication.html

El diagrama es similar al de la pregunta:bolsa-db-sync-

El PouchDB es una implementación de Javascript de CouchDB que es compatible con la API. Entonces puede usar CouchDB en el lado del servidor y Pouch en la aplicación misma y una vez que la aplicación esté en línea, puede sincronizar ambos. Esto es especialmente útil para las aplicaciones web progresivas que dependen de un primer enfoque fuera de línea.

PouchDB proporciona una API totalmente asíncrona. Esto garantiza que cuando hable con PouchDB, la interfaz de usuario no tartamudee, porque las operaciones de la base de datos no bloquean el DOM.

Consulta de reacción :

React Query a menudo se describe como la biblioteca de recuperación de datos faltante para React, pero en términos más técnicos, hace que la recuperación, el almacenamiento en caché, la sincronización y la actualización del estado del servidor en sus aplicaciones React sean muy sencillos.

Redux-persistir. Puede utilizar varios backends de almacenamiento:

https://github.com/rt2zz/redux-persist

PouchDB es uno de ellos.

Kinto.js

Un cliente de JavaScript Offline-First para Kinto.

Nota: si está buscando un cliente HTTP js puro para Kinto, consulte kinto-http.js.

La idea es conservar los datos localmente en el navegador de forma predeterminada, y luego sincronizarlos con el servidor explícitamente cuando la conectividad esté garantizada.

Hay una comparación de Kinto, pouchdb y otras soluciones: Comparación

Offix: cliente y servidor GraphQL fuera de línea

https://github.com/aerogear/offix

Offix amplía Apollo GraphQL para crear experiencias fuera de línea con todas las funciones.

Características:

Soporte fuera de línea.

Las mutaciones persisten cuando está fuera de línea.

Oyentes sin conexión y flujos de trabajo para una interfaz de usuario perfecta.

Implementaciones de resolución de conflictos flexibles y listas para usar Suscripciones y binarios

Carga que funciona sin conexión.

Soporte multiplataforma.

Funciona con Web, Cordova, Capacitor y React Native.

Marco agnóstico (funciona con React, Angular y Vue) Funciona con Apollo GraphQL Server y Prisma (Yoga)