Question

J'envisage le développement d'une application Web avec une capacité hors ligne. Je considère le formatage tout formulaire client postbacks comme des objets JSON et écrire directement à ces HTML5 LocalStorage sur un formulaire postback. Je vais alors un processus distinct qui interroge de manière asynchrone LocalStorage pour les entrées JSON et les soumet au serveur. Ce processus serveur de synchronisation n'aura aucun contexte de l'interface utilisateur. L'interface utilisateur de l'utilisateur réel peut alors être très réactif. (Je vais utiliser les fichiers cache manifeste pour traiter d'autres problèmes hors ligne).

Est-ce un plan sonore, et quelle serait la meilleure mise en œuvre technique du processus post-asynchrone JSON? (? Peut-être une minuterie, LocalStorage du scrutin et la vérification de la connexion du serveur à chaque seconde) Y at-il une meilleure façon de mettre en œuvre la synchronisation du serveur (si j'exécutait cela sur un serveur, j'écrirait un service - est-il un mécanisme de javascript équivalent? )

Merci.

Était-ce utile?

La solution 2

En fin de compte, je viens d'utiliser un setInterval simple, comme suit:

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

qui appelle alors une fonction que les boucles autour des entrées de localStorage, envoyer chacun à son tour au serveur.

Autres conseils

Je l'ai fait quelques essais l'année dernière pour lancer notre application en ligne, pour les navigateurs HTML5 seulement.

L'application est basée sur les services JSON, et rendu côté client à l'aide de notre lib: pure.js . Vous obtenez une application très réactif tout en utilisant une architecture similaire, même sans accès hors ligne.

Si l'appel de service JSON a échoué, il suppose que nous étions en ligne, et utilisé à la place de stockage local.
Lorsqu'un appel a été fait en ligne, il a vérifié l'état de la file d'attente hors ligne et la synchronisation si nécessaire.

Mais alors j'ai commencé à reproduire une logique de validation du serveur sur le client. Et découvert les données stockées ne sont pas cryptées. Même avec quelque chose comme JavaScrypt vous avez besoin de quelque part clé ou définir une clé de mot de passe, etc ...
Alors qu'est-ce que vous gardez au client? Tout? Les derniers éléments consultés? Comment vous gérer les collisions de changement de données?

Mon pari est avec les réseaux mobiles d'aujourd'hui, qui sont en ligne en général, il est plus facile de faire l'application fonctionne bien sur un mobile au lieu d'essayer de l'obtenir hors ligne.
Nous avons laissé nos efforts hors ligne pour l'instant.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top