Le gestionnaire de paquets pour
JavaScript utilisé par node.js, npm, est
le plus
grand registre software open source au monde.
Node.js installé sur notre ordinateur, va servir d’interface
réseau entre la page web de supervision et de contrôle et la cartes Arduino que
nous souhaitons piloter donc node.js permet de développer une interface web
dans un serveur qui commande directement Arduino.
node.js est utilisé dans les applications (temp réel) c’est-à-dire
plusieurs connexions peuvent être gérées de manière concurrente, Le protocole WebSocket
est ici en image.
Le protocole WebSocket vise à développer un canal de
communication full-duplex sur un socket TCP pour les navigateurs et
les serveur web.
Dans notre cas en utilise Node pour transformer les données
générer par les capteurs vers l’utilisateur final de notre site web de
supervision, et pour savoir l’état des machines.
Il
prend les demandes des utilisateurs au même temp, pour cette raison il est très
vite, ce serveur est asynchrone c.à.d. il n'attende rien, il n'attende pas
l'API du data base pour répondre aux demandes, de plus, n'utilise pas les
buffers qui consomment un espace important du mémoire de stockage.
Programmation
synchrone
Synchrone : Lorsqu’une tâche est
exécutée de manière synchrone, vous attendez la fin d’une tâche avant de passer
à une autre.
Exemple :
Une
tâche courante pour un serveur Web peut être d'ouvrir un fichier sur le serveur
et de renvoyer le contenu au client.
Voici
comment PHP ou ASP gère une requête de fichier :
ü Envoie
la tâche au système de fichiers de l'ordinateur.
ü Attend
que le système de fichiers s'ouvre et lit le fichier.
ü Renvoie
le contenu au client.
ü Prêt à
gérer la prochaine requête.
Programmation
asynchrone
Node.js utilise la programmation asynchrone.
Asynchrone : Lorsqu’une tâche est
exécutée de manière asynchrone, vous pouvez directement passer à une autre
tâche avant qu’elle ne soit terminé.
Exemple :
Voici
comment Node.js gère une requête de fichier :
ü Envoie
la tâche au système de fichiers de l'ordinateur.
ü Prêt à
gérer la prochaine requête.
ü Lorsque
le système de fichiers s'est ouvert et a lu le fichier, le serveur renvoie le
contenu au client.
ü Node.js
élimine l'attente et continue simplement avec la requête suivante.
Node.js
exécute une programmation asynchrone, non bloquante, à un seul thread (fil
d’exécution), qui est très efficace en termes de mémoire.
Que peut faire Node.js ?
ü Node.js
peut générer du contenu de page dynamique
ü Node.js
peut créer, ouvrir, lire, écrire, supprimer et fermer des fichiers sur le
serveur
ü Node.js
peut collecter des données de formulaire
ü Node.js
peut ajouter, supprimer, modifier des données dans notre base de données
Qu'est-ce qu'un fichier
Node.js ?
ü Les
fichiers Node.js contiennent des tâches qui seront exécutées sur certains
événements
ü Un
événement typique est quelqu'un qui tente d'accéder à un port sur le serveur
ü Les
fichiers Node.js doivent être lancés sur le serveur avant d'avoir un effet
ü Les
fichiers Node.js ont l'extension ".js"
Définition
du concept de Socket :
Dans le contexte des
logiciels, on peut le traduire par « connecteur réseau » ou
« interface de connexion », Il s’agit d’une
interface logicielle avec les services du système
d’exploitation,
grâce à laquelle un
développeur exploitera facilement et de manière uniforme les services d’un
protocole réseau.
La communication par socket est souvent comparée
aux communications humaines. On distingue ainsi deux modes de
communication :
Le mode connecté (comparable à une communication
téléphonique), utilisant le protocole
TCP.
Dans ce mode de communication, une connexion durable est établie entre les deux
processus, de telle façon que l’adresse de destination n’est pas nécessaire à
chaque envoi de données.
Le mode non connecté (analogue
à une communication par Gmail), utilisant le protocole UDP.
Ce mode nécessite l’adresse de destination à chaque envoi, et aucun accusé de
réception n’est donné.