Précédent   Forum du club des développeurs et IT Pro > Webmasters - Développement Web > AJAX
AJAX Forum sur la programmation AJAX. Avant de poster : Cours AJAX, FAQ AJAX, Toutes les FAQ JavaScript
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 28/12/2012, 10h17   #1
sebastien.bordat
Invité de passage
 
Homme Sébastien BORDAT
Développeur Web
Inscription : décembre 2011
Messages : 6
Détails du profil
Informations personnelles :
Nom : Homme Sébastien BORDAT
Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Développeur Web
Secteur : Santé

Informations forums :
Inscription : décembre 2011
Messages : 6
Points : 0
Points : 0
Par défaut Version hors ligne et synchronisation

Bonjour,

pour commencer, bonne fête à tous,

nous sommes actuellement en train de développer une application full web, et nous aimerions qu'elle puisse fonctionner hors ligne.
Nous en somme à faire la synchronisation entre le serveur et le poste client, mais nous rencontrons un problème : lorsqu'on fait la requête AJAX pour récupérer les informations, toutes les autres requêtes AJAX sont bloquées tant que la synchronisation n'est pas terminée (la synchronisation est faite toutes les minutes environ).

A quoi cela peut-il être du ?
Est ce que le fait qu'on travail en local, avec wamp, peut poser ce problème ?

Coté PHP, pour la synchronisation, nous faisons environ 35 requetes SQL, et la requête à une taille de 90 Mo environ.

Nous avons essayé d'utiliser les Web Workers afin de mettre la requete AJAX dans un thread séparé, mais nous n'avons pas vu de différence. Il arrive même que le navigateur plante une fois la synchronisation terminée.
Voici le code que nous avons utilisé pour les Web Workers :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
 
var worker = new Worker('sync.js');
worker.addEventListener('message', function(e) {
    var data = e.data;
 
    /*
     * insertion des données sur le poste client (IndexedDB)
     */
 
    worker.terminate();
}, false);
worker.postMessage(timestamp);
et dans le fichier sync.js :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 
function messageHandler(e) {
    var xhr = new XMLHttpRequest();
    var timestamp = e.data;
 
    if (xhr && xhr.readyState !== 0) {
        xhr.abort();
    }
 
    xhr.open("GET", "sync.php?timestamp=" + timestamp, true);
    xhr.onreadystatechange = function() {
        if (xhr.readyState == 4 && (xhr.status == 200 || xhr.status == 0)) {
            postMessage(JSON.parse(xhr.responseText));
        }
    }
    xhr.send(null);
}
 
this.addEventListener("message", messageHandler, false);
Merci à tous
sebastien.bordat est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 03h54.


 
 
 
 
Partenaires

Hébergement Web