2011-09-20 2 views
0

J'ai un problème avec un petit serveur web avec des ressources limitées:multiples demandes de poste et petit serveur web

  • Le dispositif est un contrôleur intégré avec interface réseau et utilise des pages web pour la configuration.

  • Les données sont échangées avec le format json et le post-traitement.

Le problème est le suivant: mon périphérique ne peut traiter qu'une seule demande de publication à la fois avec une petite taille de mémoire tampon.

Pour le tester, j'ai créé une page avec plusieurs messages pour envoyer des données à mon serveur. J'ai ouvert la page avec le navigateur Firefox 4.0 et le navigateur a essayé d'ouvrir plusieurs socket pour servir toutes les demandes en parallèle.

Comment créer un message de flux séquentiel? (Je ne m'inquiète pas de la vitesse)

Voici un petit exemple de la façon dont j'ai l'intention de procéder, mais cette solution ouvre deux sockets pour envoyer deux demandes de post à mon serveur et abandonner l'une d'entre elles.

for (var j=0; j<2; j++) { 
    // read page data and create objdata 
    jdata = JSON.stringify(objdata); 

    // alert("I am about to POST this:\n\n" + jdata); 

    $.post(
    'prgtimetbl.json', 
    jdata, 
    function(data) { 
    //   alert("Response: " + data); 
    }, 
    "json" 
    ); 
} 

Répondre

0

Avec jQuery utiliser $.ajax et async: false:

$.ajax({ 
    type: "POST", 
    url: "some.php", 
    async: false, 
    data: "name=John&location=Boston", 
    success: function(msg){ 
     alert("Data Saved: " + msg); 
    } 
}); 
0

Cixate était plus rapide que moi, mais j'avais une approche légèrement différente à l'aide async demandes en attente.

Exemple: http://jsfiddle.net/HTGPM/

code:

$(document).ready(function(){ 
    var stuffToPost = [{name:'obj1',id:1},{name:'obj2',id:2},{name:'obj3',id:3}]; 
    var postIndex = 0; 

    var postNext = function() { 
     if (postIndex < stuffToPost.length) 
     { 
      $.ajax({ 
       type: 'post', 
       url: '?', 
       data: JSON.stringify(stuffToPost[postIndex]), 
       success: function(data) { 
        alert('Data '+stuffToPost[postIndex].id+' was sent successfully'); 
        postIndex++; 
        postNext(); 
       }, 
       error: function() { 
        alert('Something bad happened. Stopping'); 
       } 
      }); 
     } 
     else if (postIndex == stuffToPost.length) 
     { 
      alert('All data is sent !'); 
     } 
    }; 

    postNext(); 
}); 
+0

Merci à tous pour la réponse rapide à l'aide des suggestions que je résolus! – user954211