8771 sujets

Développement web côté serveur, CMS

Bonjour à tous, je développe une api avec ExpressJs. Le fait est que toutes les API s'exécutent normalement quand elles sont appelées les unes après les autres. Mais si j'exécute deux requêtes simultanément, j'ai une erreur Cannot set headers after they are sent to the client
Au niveau de mon frontend (avec vuejs), j'avais éviter le problème en utilisant les await et les setTimeout avant d'appeler l'api

async mounted() {
 this.users = await axios.get('req1');
 this.posts = await axios.get('req2");
}

En faisant cela, je suis sur que req2 ne s'exécutera que lorsque l'exécution de req1 sera terminé et donc je n'aurait pas de problème au niveau d'Express

Le problème est que si deux utilisateurs (j'ai essayer avec mes deux navigateurs) ouvrent leurs pages simultanément, l'api crashera étant donné que les attentes (await) sont géré par chaque navigateur indépendamment du backend express

comment puis-je géré cela ? une idée, un tuto
Modérateur
Bonjour,

Il ne manquerait pas simplement un return quelque_chose; à la fonction mounted() ?

Amicalement,
parsimonhi a écrit :

Il ne manquerait pas simplement un return quelque_chose; à la fonction mounted() ?


@parsimonhi, en réalité c'est pas vraiment le problème, ça règle le problème uniquement lorsque c'est un unit client qui utilise l'application. mais si j'ai deux utilisateurs qui utilisent l'application au même moment et qu'à un moment donné les 2 requêtent l'api simultanément le backend crashera
Modérateur
Bonjour,

Mouais ! Les requêtes plus ou moins simultanées, node.js sait gérer normalement. Si ça plante chez toi, c'est qu'il manque un truc basique quelque part, et l'oublie de return; est l'erreur la plus classique, que ce soit côté client ou côté serveur.

Amicalement,