Un peu de poo pour bien appuyer la ou ça fait mal et surtout pour avoir un programme flexible et bien structuré. Transformons ce récepteur udp en un objet qui va générer des évènements.

- server_js.png (44.11 Kio) Vu 6312 fois
la notification "use strict" est une règle de bonne pratique qui impose que toutes les variables soit bien déclarées et évite la confusion avec des mots réservés. D'habitude, je ne la mettais pas forcement dans mes exemples, mais je vous conseille vivement de le faire au début de tous vos ficher js.
MyServer et l’espace de nom (namespace) qui va contenir mes objets serveurs et
UDP est un objet. L’espace de nom permet de lever toutes ambiguïté avec d’autres objets qui aurrait des noms identiques. Ici, je vais faire référence à un objet
MyServer.UDP , ainsi, meme si une autre ressource possède un objet UDP, il ni aura pas de confusion.
Dans cet objet, j’ai défini un socket udp ipv4 (srv), une variable qui contient le ‘prefix’ (qui pour rappel va permettre de filtrer ce qui arrivera sur le port udp), une variable pour savoir si le socket est ouvert ou pas (open) et une variable d’évènement (srvEvents).
Ensuite, j’ai mis 4 instruction srv.on.
error ,
close,
listening et
message. Pas besoin d’inventer quoi que soit, tout ça est écrit dans la
doc de dgram et ce sont 4 signatures d’évènements retournés par le socket. A chaque levé d’un de ces évènements, j’ai dit à mon objet de générer ses propres évènements que j’ai scindé en 2 signatures :
‘server’ pour tout ce qui est informatif sur l’état du socket (error,open et close) et
‘data’ pour l’arrivé de donnée.
Jusque-là, tout est privé et rien n’est accessible en dehors de l’objet. Pour accéder à ce don je vais avoir besoin depuis mon programme, j’ai créé 2 fonctions public (this) pour pouvoir ouvrir et fermer le socket et une pour exposé srvEvent afin de pouvoir m’abonné aux évènements de l’objet .
La dernière ligne 'module.exports' permet d'exporter mon espace de nom pour qu'il soit accessible par d'autres fichiers du programme.
le paramètre (err) dans
srv.on("listening", (err) … peut etre supprimé
srv.on("listening", () .... C'est juste le residu d'un copié/coller de fénéant et il n'a rien a faire la
