2017-10-18 14 views
0

J'ai un point de terminaison API qui accepte certaines données du client. Il y a aussi une minuterie de 1 minute qui est visible pour le client. Ce que j'espère accomplir est ceci:Synchronisation des événements avant/arrière et de l'événement?

Pendant que le temporisateur est actif (> 0) tous les messages envoyés à l'API sont conservés dans le stockage ou dans le tableau (ou quelque chose). Une fois que le temporisateur atteint zéro, le client ne peut plus faire une demande à l'API et toutes les demandes qui ont été faites et stockées pendant que le temporisateur était actif, sont maintenant traitées par une fonction - Par exemple, disons simplement que cette fonction enregistre tout les données à l'écran. Peut-être que je pense à cela de la mauvaise manière, mais comment puis-je synchroniser une minuterie frontale et backend pour que le serveur et le client sachent quand arrêter le traitement des requêtes POST et faire savoir au serveur qu'il est temps pour traiter toutes les données qui ont été envoyées pendant cette minute.

 

    var express = require("express"); 
    var app = express(); 

    app.post("/api/data", function(req, res){ 
    // do something here - no clue 
    }); 

    app.listen(process.env.PORT,() => { 
     console.log("server running on port: ", process.env.PORT); 
    }); 

Excuses si je l'ai mal expliqué. Appréciez toute l'aide que je peux obtenir, merci :)

Répondre

0

Lorsque le temporisateur côté client atteint 0, envoyer un appel api au serveur. Lorsque le serveur obtient cet appel api met un booléen à false. Si ce booléen est faux, vous ignorez les données. Ce que je veux dire dans le code est quelque chose comme ça

var ignore = false; 
app.post("/api/data/stop", function(req,res){ 
    ignore = true; 
}); 
app.post("/api/data", function(req, res){ 
    if(!ignore){ 
    // listening to data 
    } 
}); 

app.listen(process.env.PORT,() => { 
    console.log("server running on port: ", process.env.PORT); 
}); 
0

Que voulez-vous atteindre, parce que laisser le client décider quelque chose est le pire choix que vous pouvez faire.

  1. Peut-être passer l'heure du serveur au client. Calculez la différence et commencez à compter. Mais vérifiez sur le serveur si le client est autorisé à poster.
  2. ou laisser le serveur calculer combien de secondes il reste jusqu'à ce que le compte à rebours atteint et les transmettre au client. Mais le serveur doit toujours vérifier l'heure valide.

Je choisirais l'un d'entre eux. Laissez le serveur être le facteur décisif et ne dépendez pas du client. Puisque vous pouvez facilement changer l'heure du PC.

+0

Ah d'accord, merci. Avec le recul, oui, amener le client à décider des choses est une très mauvaise pratique. Appréciez votre réponse c: –