Publicité
+ Répondre à la discussion Actualité déjà publiée
Affichage des résultats 1 à 6 sur 6
  1. #1
    Responsable Développement Web

    Avatar de Bovino
    Homme Profil pro Didier Mouronval
    Développeur Web
    Inscrit en
    juin 2008
    Messages
    21 927
    Détails du profil
    Informations personnelles :
    Nom : Homme Didier Mouronval
    Âge : 43
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : juin 2008
    Messages : 21 927
    Points : 81 009
    Points
    81 009

    Par défaut [Article] Une application HTML5 desktop en mode offline



    Ludovic Chane Won In, de Ippon Technologies, vous propose un article : Une application HTML5 desktop en mode offline.

    Dans cet article, l'auteur vous fait partager son retour d'expérience sur un projet d'application de type « desktop » en HTML5 utilisant l'API offline.

    N'hésitez pas à faire part de vos remarques et commentaires voire d'apporter des informations complémentaires sur des problématiques similaires que vous auriez pu rencontrer lors de vos propres développements.

    Une application HTML5 desktop en mode offline.

    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  2. #2
    Expert Confirmé
    Avatar de SylvainPV
    Profil pro Sylvain Pollet-Villard
    Inscrit en
    novembre 2012
    Messages
    1 542
    Détails du profil
    Informations personnelles :
    Nom : Sylvain Pollet-Villard

    Informations forums :
    Inscription : novembre 2012
    Messages : 1 542
    Points : 3 006
    Points
    3 006

    Par défaut

    Bon article

    Une des problématiques que j'avais rencontrée avec une web app offline était qu'il fallait enregistrer les actions de l'utilisateur pour les synchroniser plus tard lorsque la connexion a été retrouvée.

    Pour réaliser cela, j'ai créé une méthode Javascript destinée à tous les appels AJAX sortants, qui lorsque la requête échouait la plaçait dans une pile elle-même stockée dans le localStorage. Puis, toutes les 30 secondes, lorsque la pile n'est pas vide le script essaie de la vider en relancant dans l'ordre les requêtes (First In First Out).

    Pour aller plus loin, il faut passer par un templating full client-side (c'est à dire générer toutes les pages en Javascript à partir de la data) de telle sorte que même si l'utilisateur est hors-ligne et la requête échoue, les pages peuvent encore être "mises à jour" avec les actions de l'utilisateur. A l'étape de synchronisation le modèle côté client ne change pas, ce qui fait que l'utilisateur passe du online au offline et vice-versa en toute transparence (bien que j'ajoute un signe disctinctif aux données encore non synchronisées)

    Connaissez-vous d'autres moyens de gérer les actions utilisateur en hors-ligne et la synchronisation ?

  3. #3
    Invité
    Invité(e)

    Par défaut

    bonjour

    localStorage c'est vraiment pratique mais il est un problème qui n'est pas évoque c'est la façon dont est stoker ces donnés par le navigateur ou plutot les navigateurs car chaques navigateurs a son fichier de sauvegarde et contrairement aux cookies si je sauvegarde un fichier avec chrome il ne sera pas possible de le visualisé avec firefox et vice versa.

  4. #4
    Expert Confirmé
    Avatar de Kaamo
    Homme Profil pro Cyril
    Ingénieur développement logiciels
    Inscrit en
    avril 2007
    Messages
    1 108
    Détails du profil
    Informations personnelles :
    Nom : Homme Cyril
    Âge : 27
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : avril 2007
    Messages : 1 108
    Points : 2 588
    Points
    2 588

    Par défaut

    @mekal : Apparemment, dans l'article il est mentionné qu'ils ont utilisé Locache pour gérer les navigateurs n'implémentant pas le LocalStorage. La librairie propose aussi des outils afin de gérer l'écriture/la lecture de façon simple. (voir le lien)

    Cela reste une appli pour une seule personne, qui n'a pas besoin de se resynchroniser avec le serveur derrière. Dommage, c'est le plus intéressant

    Personnellement, j'utilise IndexedDB. localStorage étant synchrone, ça peut te bloquer le rendu du document tant que tout n'est pas chargé en mémoire. Sans parler des 5 Mo de limite, des données qui ne sont en fait que des chaines, du traitement stringify/parse redondant dont on aimerait bien se passer, de l'accès disque à chaque appel de localStroage (qui peut être long en cas d'antivirus qui check etc), du système non transactionnel / pas de concept d'index (donc pour chercher dans la base locale .... ) ... etc, Bref, localStorage, à part être plus simple d'utilisation qu'IndexedDB, je m'en éloigne autant que je le peux.
    Mais oui, pour ce type d'application en exemple, ça semble suffisant mais t'es vite limité avec ça.

    ps : A noter que Google Chrome Frame va bientôt mourir (ça date d'il y a moins d'une semaine)

    Connaissez-vous d'autres moyens de gérer les actions utilisateur en hors-ligne et la synchronisation ?
    Non, j'utilise la même technique à ceci près que c'est avec une IndexedDB et du websocket. Mais dans la logique c'est similaire. Un démon qui tourne toutes les X secondes pour checker la connexion et synchroniser si nécessaire et un "flag" pour différencier le "synchro" du "non-synchro". Bien sûr du templating côté client. Aussi, certaines actions sont impossibles à réaliser en offline, du coup c'est plus un mode "dégradé" qu'un mode déco.

  5. #5
    Expert Confirmé
    Avatar de SylvainPV
    Profil pro Sylvain Pollet-Villard
    Inscrit en
    novembre 2012
    Messages
    1 542
    Détails du profil
    Informations personnelles :
    Nom : Sylvain Pollet-Villard

    Informations forums :
    Inscription : novembre 2012
    Messages : 1 542
    Points : 3 006
    Points
    3 006

    Par défaut

    Oui l'IndexedDB mais depuis que j'ai un projet de 2 mois qui a été quasi-foutu à la poubelle à cause de l'abandon de l'API WebSQL, je me méfie Au moins le localStorage est supporté quasi partout et ce n'est pas prêt de changer

  6. #6
    Expert Confirmé
    Avatar de Kaamo
    Homme Profil pro Cyril
    Ingénieur développement logiciels
    Inscrit en
    avril 2007
    Messages
    1 108
    Détails du profil
    Informations personnelles :
    Nom : Homme Cyril
    Âge : 27
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : avril 2007
    Messages : 1 108
    Points : 2 588
    Points
    2 588

    Par défaut

    C'est clair que sur ce point, je n'ai rien à dire localStorage est beaucoup mieux supporté. Mais les "têtes pensantes" du Web s'orientent sur IndexedDB qui sera un standard W3C donc ne sera pas abandonné comme l'a été WebSQL. J'ai travaillé sur IndexedDB en me basant sur la spéc de mai 2012 et elle a évolué depuis peu (mai 2013).
    Du coup, faut rester à la page pour ne pas que tout te claque entre les pattes. Mais c'est un peu le jeu quand tu utilises une techno en cours de stabilisation .. tu essuies les plâtres

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •