Pregunta

Estoy considerando desarrollar una aplicación web con capacidad fuera de línea. Estoy considerando formatear todas las posteriores de formulario de clientes como objetos JSON, y escribir estos directamente a HTML5 LocalStorage en un formulario posterior. Luego tendré un proceso separado que encueste asincrónicamente el almacenamiento local para las entradas JSON y las envíe al servidor. Este proceso de sincronización del servidor no tendrá ningún contexto de la interfaz de usuario. La interfaz de usuario del usuario real puede ser muy receptiva. (Usaré archivos de manifiesto Cache para tratar con otros problemas fuera de línea).

¿Es este un plan de sonido y cuál sería la mejor implementación técnica del proceso asíncrono JSON Post? (¿Quizás un temporizador, encuestando localStorage y verificación de la conexión del servidor cada segundo?) ¿Existe una mejor manera de implementar la sincronización del servidor (si estuviera implementando esto en un servidor, escribiría un servicio? ¿Existe un mecanismo de JavaScript equivalente? )

Gracias.

¿Fue útil?

Solución 2

Al final, acabo de usar un SetInterval simple, como sigue:

setInterval("SyncLocalStorageToServer()", 4000); // Loop at 4 second intervals

Lo que luego llama a una función que gira alrededor de las entradas de LocalStorage, enviando cada una a su vez al servidor.

Otros consejos

Hice algunas pruebas el año pasado para ejecutar nuestra aplicación fuera de línea, solo para navegadores HTML5.

La aplicación se basa en los servicios JSON y se convirtió en el lado del cliente utilizando nuestro lib: puro.js. Obtiene una aplicación muy receptiva solo utilizando una arquitectura similar, incluso sin acceso fuera de línea.

Si la llamada del servicio JSON falló, supuso que estábamos fuera de línea y usamos el almacenamiento local.
Cuando se realizó una llamada en línea, verificó el estado de la cola fuera de línea y la sincronizó si es necesario.

Pero luego comencé a replicar alguna lógica de validación del servidor en el cliente. Y descubrió que los datos almacenados no estaban encriptados. Incluso con algo como javascirio Necesita la clave en algún lugar o establecer una tecla de contraseña, etc.
Entonces, ¿qué guías para el cliente? ¿Todo? Los últimos elementos vistos? ¿Cómo maneja las colisiones de cambio de datos?

Mi apuesta es con las redes móviles de hoy, que están en línea en general, es más fácil hacer que la aplicación funcione bien en un móvil en lugar de tratar de desconectarlo.
Dejamos nuestros esfuerzos fuera de línea por ahora.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top