IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

NodeJS Discussion :

Comment gérer la séquentialité de mon serveur


Sujet :

NodeJS

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2019
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2019
    Messages : 3
    Points : 1
    Points
    1
    Par défaut Comment gérer la séquentialité de mon serveur
    Bonjour, je suis actuellement en train de travailler sur un serveur node.js. Cependant je suis débutant sur cette technologie et j'aurais aimé avoir un peu d'aide pour un problème.
    Donc voilà, mon serveur se met sur écoute. Il récupère par le client un chemin d'accès sur un disque en réseau. Dans ce chemin il y a plusieurs fichiers Trs que je dois décoder. Pour les décoder, je dois transférer tous les fichiers TRS en local sur ma machine, puis faire le décodage avec un exe que je possède.
    Le serveur possède 3 fonctions principales, une fonction qui lit le chemin donné par le client, qui transfère les fichiers en local, puis les supprime du disque.

    Nom : Capture.PNG
Affichages : 253
Taille : 47,5 Ko

    J'aimerais ensuite qu'après et seulement après que le traitement de cette fonction eût été terminé, pour exécuter ma seconde fonction qui exécute une commande exécutant elle même le fichier exe en ma possession afin de décoder les trs et de les placer les noveaux .txt dans le répertoire fourni par le client.

    Nom : Capture1.PNG
Affichages : 189
Taille : 46,1 Ko

    Enfin ma dernière fonction doit elle même être exécutée après la seconde. Elle doit parcourir le fichier de départ pour compter le nombre de fichiers .txt crées pour comparer avec le nombre de fichiers Trs non nuls (qui seront les seuls décodés et dont la valeur a été obtenue sur la première fonction). Après quoi, les fichiers trs transportés plus tôt sur le local sont supprimés, et l'attribut finalMessage prend une valeur qui sera retourné au client.

    Nom : Capture2.PNG
Affichages : 199
Taille : 22,6 Ko

    Indépendamment, les fonctions et le serveur fonctionnent tous. Mais le problème c'est la séquentialité. J'aurais besoin d'aide pour faire en sorte que tout s'exécute dans l'ordre. Merci par avance aux personnes qui voudraient bien m'aider et qui auraient pris le temps de me lire.

  2. #2
    Expert éminent sénior
    Avatar de Marco46
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2005
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2005
    Messages : 4 413
    Points : 19 609
    Points
    19 609
    Par défaut
    Tu devrais prendre le temps de te former aux commandes async / await et à la nouvelle API fs / promises. (node 10 minimum mais là tu utilises les callbacks, c'est à dire des concepts qui sont obsolètes depuis node 8 au moins avec l'API promisify)

    Refactore ton code avec ces concepts et tu y verras déjà beaucoup plus clair.

    Autre point, n'utilise pas les fonctions suffixées par Sync, ça bloque l'event loop de ton serveur et ça empêche donc de traiter d'autres requêtes.

    Dernier point à propos du forum, c'est beaucoup mieux de poster directement le code avec des balises CODE plutôt que de poster des screenshots de ton code. Si je veux exécuter un bout de ton code chez moi je dois tout réécrire à la main.
    Un problème avec Git ? Essayez la FAQ, sinon posez votre question sur le forum.



    "Toute personne croyant qu'une croissance exponentielle peut durer indéfiniment dans un monde fini est soit un fou, soit un économiste."
    Kenneth E. Boulding

    "Les richesses naturelles sont inépuisables, car, sans cela, nous ne les obtiendrions pas gratuitement. Ne pouvant être ni multipliées ni épuisées, elles ne sont pas l’objet des sciences économiques."
    Jean-Baptiste Say, Traité d'économie politique, 1803.

    "/home/earth is 102% full ... please delete anyone you can."
    Inconnu

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2019
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2019
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Bonsoir, merci d'avoir répondu. Je vous avoue avoir l'impression d'être un peu perdu sur les async / await, ainsi même que sur les callback. Je ne vois pas quelles fonctions sont des callbacks dans mon code. Pourriez-vous m'aiguiller? Ensuite j'ai déjà utilisé async / await et j'étais arrivé au même résultat, mais comme ça reste plus efficace je vais les remettre. J'essayerai aussi d'utiliser cet API et je republierai mon code avec les balises que vous m'avez fournies si celui-ci ne fonctionne toujours pas. Pour les besoins de mon entreprise où j'effectue une alternance, j'ai dû essayer de bricoler mon code comme je le pouvais sans m'y connaître dans le langage.
    Merci à vous.

  4. #4
    Expert éminent sénior
    Avatar de Marco46
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2005
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2005
    Messages : 4 413
    Points : 19 609
    Points
    19 609
    Par défaut
    Citation Envoyé par Pirolascar Voir le message
    Pour les besoins de mon entreprise où j'effectue une alternance, j'ai dû essayer de bricoler mon code comme je le pouvais sans m'y connaître dans le langage.
    Il n'y a personne dans cette entreprise pour t'aider sur Node.js et JavaScript ?

    Si tu ne connais pas le langage il y a peu de chance que tu arrives à quoi que ce soit d'exploitable à court terme sans prendre un minimum le temps de l'apprendre.

    Pour le reste toutes les fonctions qui manipulent le filesystem (et les I/O d'une manière générale) de manière asynchrone utilisent des callbacks ce qui crée beaucoup d'imbrications dans le code source. L'intérêt du mécanisme async / await c'est simuler une écriture synchrone et donc de rendre le code plus lisible.
    Un problème avec Git ? Essayez la FAQ, sinon posez votre question sur le forum.



    "Toute personne croyant qu'une croissance exponentielle peut durer indéfiniment dans un monde fini est soit un fou, soit un économiste."
    Kenneth E. Boulding

    "Les richesses naturelles sont inépuisables, car, sans cela, nous ne les obtiendrions pas gratuitement. Ne pouvant être ni multipliées ni épuisées, elles ne sont pas l’objet des sciences économiques."
    Jean-Baptiste Say, Traité d'économie politique, 1803.

    "/home/earth is 102% full ... please delete anyone you can."
    Inconnu

  5. #5
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2019
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2019
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Non malheureusement il n'y a personne pouvant m'aider dans le domaine. Je dois malgré tout parvenir à quelque chose qui fonctionne.

  6. #6
    Expert éminent sénior
    Avatar de Marco46
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2005
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2005
    Messages : 4 413
    Points : 19 609
    Points
    19 609
    Par défaut
    Tu fais une alternance de développeur dans une boite qui te demande de faire du node mais personne ne connaît rien à cette techno dans cette boite ?

    Désolé de ma réaction mais c'est assez surréaliste !
    Un problème avec Git ? Essayez la FAQ, sinon posez votre question sur le forum.



    "Toute personne croyant qu'une croissance exponentielle peut durer indéfiniment dans un monde fini est soit un fou, soit un économiste."
    Kenneth E. Boulding

    "Les richesses naturelles sont inépuisables, car, sans cela, nous ne les obtiendrions pas gratuitement. Ne pouvant être ni multipliées ni épuisées, elles ne sont pas l’objet des sciences économiques."
    Jean-Baptiste Say, Traité d'économie politique, 1803.

    "/home/earth is 102% full ... please delete anyone you can."
    Inconnu

Discussions similaires

  1. Réponses: 8
    Dernier message: 29/02/2016, 14h42
  2. Réponses: 2
    Dernier message: 16/08/2011, 14h09
  3. Réponses: 8
    Dernier message: 22/02/2007, 13h29
  4. Serveur/Client UDP: comment envoyer un fichier avec mon code
    Par danje dans le forum Entrée/Sortie
    Réponses: 7
    Dernier message: 21/12/2005, 14h54

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo