Une relation client-serveur est un modèle de communication entre deux entités dans un
système informatique : le client et le serveur. , qui les traite et renvoie des réponses au client.
Voici comment fonctionne généralement cette relation :
1. Le client envoie une demande au serveur : Le client, qui peut être un navigateur web, une
application mobile, un logiciel, ou tout autre dispositif capable d'envoyer des requêtes réseau,
envoie une demande au serveur. Cette demande contient généralement des informations sur
l'action souhaitée, comme récupérer une page web, envoyer des données, effectuer une
opération, etc.
Var http = require (‘http’)
2. Le serveur reçoit la demande : Le serveur, qui est un ordinateur ou un système capable de
recevoir et de répondre aux requêtes réseau, reçoit la demande du client. Le serveur est
configuré pour écouter les requêtes sur un port spécifique et attend les connexions
entrantes.
3. Le serveur traite la demande : Une fois que le serveur reçoit la demande, il la traite en fonction
de la logique de son application ou de ses services. Cela peut impliquer l'accès à une base de
données, l'exécution d'opérations, la récupération de ressources, ou tout autre traitement
nécessaire pour répondre à la demande.
http.createServer (function (req, res) {
})
4. Le serveur génère une réponse : Après avoir traité la demande, le serveur génère une réponse
correspondante. Cette réponse peut contenir des données demandées par le client, un message
de confirmation, des informations supplémentaires ou tout autre contenu spécifique à la
demande.
5. Le serveur envoie la réponse au client : Une fois que la réponse est générée, le serveur l'envoie
au client en utilisant le protocole approprié (par exemple, HTTP pour les applications web). La
réponse peut contenir des en-têtes pour fournir des informations supplémentaires, ainsi que le
corps de la réponse avec les données demandées ou le résultat de l'opération.
6. Le client reçoit et traite la réponse : Le client reçoit la réponse du serveur et la traite en
conséquence. Cela peut impliquer l'affichage de la page web, l'analyse des données reçues, la
mise à jour de l'interface utilisateur ou toute autre action en fonction de la nature de la demande.
Ce processus de communication entre le client et le serveur se poursuit tant que le client envoie
des demandes et que le serveur y répond. La relation client-serveur est un modèle fondamental
dans de nombreux systèmes informatiques, y compris les applications web, les applications
mobiles, les jeux en ligne, les services Cloud, etc. Elle permet aux clients de demander des
ressources ou d'effectuer des actions via le serveur, qui traite ces demandes et renvoie des
réponses appropriées.
ACCEDER A LA METHODE D’UN OBJET
Le point dans l'expression http.createServer () est utilisé pour accéder à une méthode
ou à une propriété d'un objet. Dans ce cas précis, http.createServer () est une méthode
de l'objet http.
En JavaScript, les objets sont des entités qui regroupent des propriétés et des méthodes. Les
propriétés représentent les valeurs associées à l'objet, tandis que les méthodes sont des
fonctions qui peuvent être exécutées sur cet objet.
Lorsque nous utilisons le point ( .) après un objet, nous indiquons que nous voulons accéder à
une propriété ou à une méthode de cet objet.
Dans le cas de http.createServer (), http est un module intégré de Node.js qui fournit
des fonctionnalités pour créer un serveur HTTP. createServer () est une méthode de
l'objet http qui permet de créer un serveur HTTP en utilisant les fonctionnalités fournies par
le module.
En utilisant le point, nous indiquons que nous voulons accéder à la méthode
createServer () de l'objet http pour créer notre serveur HTTP.
MODULE INTEGRE
En Node.js, lorsque nous voulons utiliser un module intégré ou un module externe,
nous utilisons la fonction require () pour le charger. Dans cet exemple, nous
utilisons require('http') pour charger le module HTTP intégré de Node.js.
Une fois que le module est chargé, nous pouvons l'utiliser pour créer un serveur
HTTP, écouter les demandes entrantes, gérer les requêtes et renvoyer des réponses.
N'oubliez pas que le module http est intégré à Node.js, vous n'avez donc pas besoin
d'installer quoi que ce soit pour l'utiliser.
La méthode http.CreateServer () est utilisée dans Node.js pour créer un serveur
HTTP qui écoute les demandes entrantes et y répond. Voici un exemple d'utilisation
de http.createServer() :
Var http = require ('http');
var server = http. CreateServer (function (req, res)
{ // Code de gestion de la demande ici });
server.listen (3000, function ()
{ console.log ('Le serveur est en
écoute sur le port 3000');
});
Dans cet exemple, nous créons un serveur HTTP en utilisant http. CreateServer ().
La méthode createServer () prend une fonction de rappel en argument, qui sera
exécutée chaque fois qu'une demande est reçue par le serveur.
La fonction de rappel prend deux arguments : req (la demande du client) et res (la
réponse que le serveur envoie au client). Vous pouvez ajouter votre propre code à
l'intérieur de cette fonction pour gérer la demande du client et générer une réponse
appropriée.
Une fois que le serveur est créé, nous utilisons server.listen () pour spécifier le
port sur lequel le serveur écoute les demandes entrantes. Dans cet exemple, le
serveur est configuré pour écouter le port 3000. Vous pouvez modifier le numéro de
port selon vos besoins.
En résumé, http. CreateServer () est utilisé pour créer un serveur HTTP dans
Node.js, et la fonction de rappel spécifiée sera exécutée à chaque demande entrante.
Vous pouvez ajouter votre propre logique de gestion de la demande à l'intérieur de
cette fonction pour répondre aux demandes des clients.
LES DIFFERENTS TYPES DE SERVEURS
Il existe différents types de serveurs en informatique, chacun ayant un rôle spécifique
et des fonctionnalités différentes. Voici quelques-uns des types de serveurs les plus
couramment utilisés :
1. Serveur Web : Un serveur web est conçu pour héberger des sites web et fournir des
pages web aux navigateurs des clients. Les serveurs web les plus populaires incluent
Apache HTTP Server, Nginx et Microsoft IIS. Ils prennent en charge les protocoles
HTTP et HTTPS et fournissent des ressources statiques et dynamiques, telles que des
fichiers HTML, des images, des scripts côté serveur, etc.
2. Serveur de messagerie : Un serveur de messagerie est responsable de la gestion et de
la distribution des e-mails. Il reçoit, stocke et transfère les messages électroniques
entre les utilisateurs. Des serveurs de messagerie couramment utilisés incluent
Microsoft Exchange, Postfix, Sendmail et Dovecot.
3. Serveur de fichiers : Un serveur de fichiers permet de stocker et de partager des
fichiers sur un réseau. Il facilite l'accès et la gestion centralisée des fichiers pour les
utilisateurs et les clients. Des exemples de serveurs de fichiers comprennent Windows
Server avec le service de partage de fichiers SMB (Server Message Block), NFS
(Network File System) pour les systèmes Unix/Linux, ainsi que des solutions de
stockage en réseau (NAS) dédiées.
4. Serveur de bases de données : Les serveurs de bases de données stockent, gèrent et
permettent l'accès aux données structurées. Ils prennent en charge des systèmes de
gestion de bases de données (SGBD) tels que MySQL, Oracle, Microsoft SQL Server,
PostgreSQL, MongoDB, etc. Les serveurs de bases de données permettent aux clients
d'interagir avec les données en exécutant des requêtes et des opérations de
lecture/écriture.
5. Serveur DNS : Un serveur DNS (Domain Name System) est responsable de la
résolution des noms de domaine en adresses IP. Il permet de traduire des noms de
domaine, tels que www.example.com, en adresses IP compréhensibles par les
ordinateurs. Les serveurs DNS les plus utilisés incluent BIND (Berkeley Internet Name
Domain), Microsoft DNS Server et PowerDNS.
6. Serveur de streaming multimédia : Ces serveurs sont conçus pour diffuser des
contenus multimédias en continu, tels que des vidéos, des fichiers audio, des flux en
direct, etc. Des exemples de serveurs de streaming populaires sont Wowza Streaming
Engine, Adobe Media Server (anciennement Flash Media Server), VLC Media Server,
etc.
7. Serveur de jeu : Les serveurs de jeu sont utilisés pour héberger des jeux en ligne et
permettre aux joueurs de se connecter, de jouer ensemble et de partager des
informations dans un environnement de jeu en réseau. Certains exemples de serveurs
de jeu incluent Steam, Xbox Live, Minecraft Realms et les serveurs privés dédiés pour
des jeux spécifiques.
Il existe également d'autres types de serveurs spécialisés tels que les serveurs proxy,
les serveurs VPN, les serveurs de sauvegarde, les serveurs de virtualisation, etc., qui
ont des fonctionnalités spécifiques en fonction des besoins des infrastructures
informatiques et des applications.
Un serveur proxy est un serveur intermédiaire situé entre un client et un serveur cible. Il agit
comme un relais pour les demandes du client, en effectuant des actions en son nom et en
transmettant les réponses du serveur cible au client. Les serveurs proxy sont couramment
utilisés pour diverses raisons, notamment l'amélioration des performances, la sécurité et
l'anonymat. Voici quelques types courants de serveurs proxy :
1. Proxy HTTP : Un proxy HTTP est spécifiquement conçu pour gérer les demandes HTTP
entre un client et un serveur web. Il peut être utilisé pour mettre en cache les ressources web,
filtrer les requêtes, limiter l'accès à certains sites, améliorer les performances en réduisant la
latence, etc. Certains exemples populaires de serveurs proxy HTTP sont Apache HTTP Server
avec le module mod_proxy, Nginx, Squid, etc.
2. Proxy HTTPS : Un proxy HTTPS fonctionne de manière similaire à un proxy HTTP, mais il
est capable de gérer le trafic chiffré HTTPS. Il agit en tant qu'intermédiaire entre le client et le
serveur pour déchiffrer et chiffrer les données lors de la transmission. Cela permet au proxy
de surveiller, filtrer ou optimiser le trafic HTTPS. Certains serveurs proxy HTTP, tels que
Nginx et Squid, peuvent également prendre en charge le chiffrement HTTPS.
3. Proxy inverse : Un proxy inverse est généralement utilisé pour équilibrer la charge entre
plusieurs serveurs en répartissant le trafic entrant. Il est placé du côté du serveur et reçoit les
demandes des clients, puis les redirige vers l'un des serveurs en aval en fonction de divers
algorithmes d'équilibrage de charge. Cela permet de répartir la charge de manière équitable et
d'améliorer les performances et la disponibilité du service. Des exemples populaires de
serveurs proxy inverse sont Nginx, HAProxy et Apache HTTP Server avec le module
mod_proxy_balancer.
4. Proxy SOCKS : Le protocole SOCKS (Socket Secure) est utilisé pour créer des connexions
TCP ou UDP sécurisées à travers un serveur proxy. Un serveur proxy SOCKS agit comme un
relais pour les connexions réseau, permettant aux clients de contourner les restrictions de
réseau, d'anonymiser leur adresse IP et de se connecter à des services à distance. Des
exemples de serveurs proxy SOCKS sont SOCKS5, Shadowsocks, Dante, etc.
5. Proxy transparent : Un proxy transparent est un type de proxy qui fonctionne sans nécessiter
de configuration spécifique du client. Il intercepte automatiquement les connexions réseau
sortantes et redirige le trafic via le proxy sans que le client ait besoin de le configurer
explicitement. Cela permet de filtrer, de surveiller ou de contrôler le trafic réseau sans
nécessiter de modifications de configuration sur le client.
Ces serveurs proxy peuvent être utilisés dans divers scénarios, tels que la mise en cache de
contenu, l'amélioration de la sécurité en filtrant le trafic malveillant, la contournement des
restrictions géographiques, la protection de la vie privée en masquant l'adresse IP du client, et
bien d'autres encore.
SERVEUR PROXY
Un serveur proxy est un serveur intermédiaire situé entre un client et un
serveur cible. Il agit comme un relais pour les demandes du client, en
effectuant des actions en son nom et en transmettant les réponses du
serveur cible au client. Les serveurs proxy sont couramment utilisés pour
diverses raisons, notamment l'amélioration des performances, la sécurité et
l'anonymat. Voici quelques types courants de serveurs proxy :
1. Proxy HTTP : Un proxy HTTP est spécifiquement conçu pour gérer les
demandes HTTP entre un client et un serveur web. Il peut être utilisé pour
mettre en cache les ressources web, filtrer les requêtes, limiter l'accès à
certains sites, améliorer les performances en réduisant la latence, etc.
Certains exemples populaires de serveurs proxy HTTP sont Apache HTTP
Server avec le module mod_proxy, Nginx, Squid, etc.
2. Proxy HTTPS : Un proxy HTTPS fonctionne de manière similaire à un proxy
HTTP, mais il est capable de gérer le trafic chiffré HTTPS. Il agit en tant
qu'intermédiaire entre le client et le serveur pour déchiffrer et chiffrer les
données lors de la transmission. Cela permet au proxy de surveiller, filtrer
ou optimiser le trafic HTTPS. Certains serveurs proxy HTTP, tels que Nginx et
Squid, peuvent également prendre en charge le chiffrement HTTPS.
3. Proxy inverse : Un proxy inverse est généralement utilisé pour équilibrer la
charge entre plusieurs serveurs en répartissant le trafic entrant. Il est placé
du côté du serveur et reçoit les demandes des clients, puis les redirige vers
l'un des serveurs en aval en fonction de divers algorithmes d'équilibrage de
charge. Cela permet de répartir la charge de manière équitable et
d'améliorer les performances et la disponibilité du service. Des exemples
populaires de serveurs proxy inverse sont Nginx, HAProxy et Apache HTTP
Server avec le module mod_proxy_balancer.
4. Proxy SOCKS : Le protocole SOCKS (Socket Secure) est utilisé pour créer des
connexions TCP ou UDP sécurisées à travers un serveur proxy. Un serveur
proxy SOCKS agit comme un relais pour les connexions réseau, permettant
aux clients de contourner les restrictions de réseau, d'anonymiser leur
adresse IP et de se connecter à des services à distance. Des exemples de
serveurs proxy SOCKS sont SOCKS5, Shadowsocks, Dante, etc.
5. Proxy transparent : Un proxy transparent est un type de proxy qui
fonctionne sans nécessiter de configuration spécifique du client. Il
intercepte automatiquement les connexions réseau sortantes et redirige le
trafic via le proxy sans que le client ait besoin de le configurer explicitement.
Cela permet de filtrer, de surveiller ou de contrôler le trafic réseau sans
nécessiter de modifications de configuration sur le client.
Ces serveurs proxy peuvent être utilisés dans divers scénarios, tels que la
mise en cache de contenu, l'amélioration de la sécurité en filtrant le trafic
malveillant, la contournement des restrictions géographiques, la protection
de la vie privée en masquant l'adresse IP du client, et bien d'autres encore.
Node.js en tant que serveur de fichiers
Le module de système de fichiers Node.js vous permet de travailler
avec le système de fichiers de votre ordinateur.
Pour inclure le module File System, utilisez la require()méthode :
var fs = require('fs');
Utilisation courante du module File System :
Lire des fichiers
Créer des fichiers
Mettre à jour les fichiers
Supprimer les fichiers
Renommer les fichiers
Lire les fichiers
La fs.readFile()méthode est utilisée pour lire des fichiers sur votre
ordinateur.
Supposons que nous ayons le fichier HTML suivant (situé dans le
même dossier que Node.js) :
demofile1.html
<html>
<body>
<h1>My Header</h1>
<p>My paragraph.</p>
</body>
</html>
Créez un fichier Node.js qui lit le fichier HTML et renvoyez le
contenu :
ExempleObtenez votre propre serveur Node.js
var http = require('http');
var fs = require('fs');
http.createServer(function (req, res) {
fs.readFile('demofile1.html', function(err, data) {
res.writeHead(200, {'Content-Type': 'text/html'});
res.write(data);
return res.end();
});
}).listen(8080);
Exemple d'exécution »
Enregistrez le code ci-dessus dans un fichier appelé
"demo_readfile.js", et lancez le fichier :
Lancez demo_readfile.js :
C:\Users\Your Name>node demo_readfile.js
Si vous avez suivi les mêmes étapes sur votre ordinateur, vous verrez
le même résultat que l'exemple : http://localhost:8080
Explication du code
Pour créer un fichier Node.js qui lit un fichier HTML, vous pouvez utiliser le module fs
(file system) intégré de Node.js pour lire le contenu du fichier HTML, puis utiliser le
module http pour créer un serveur HTTP qui renvoie ce contenu au client. Voici un
exemple de code :
javascriptCopy code
const http = require('http');
const fs = require('fs');
const server = http.createServer(function (req, res) {
// Lecture du fichier HTML
fs.readFile('chemin/vers/votre/fichier.html', 'utf8', function (err, content) {
if (err) {
res.writeHead(500, {'Content-Type': 'text/plain'});
res.end('Une erreur s\'est produite lors de la lecture du fichier');
} else {
res.writeHead(200, {'Content-Type': 'text/html'});
res.end(content);
}
});
});
server.listen(3000, function () {
console.log('Le serveur est en écoute sur le port 3000');
});
); });
Dans cet exemple, nous utilisons fs.readFile() pour lire le contenu du fichier
HTML. Assurez-vous de spécifier le bon chemin vers votre fichier HTML dans la
fonction fs.readFile(). La fonction de rappel est appelée une fois que la lecture du
fichier est terminée, renvoyant éventuellement une erreur ou le contenu du fichier.
Ensuite, nous créons un serveur HTTP en utilisant http.createServer (), et
lorsqu'une demande est reçue, nous utilisons fs.readFile () pour lire le fichier
HTML et renvoyer le contenu en tant que réponse au client. Si une erreur se produit
lors de la lecture du fichier, nous renvoyons une réponse d'erreur.
Enfin, nous écoutons les demandes entrantes sur le port 3000 à l'aide de
server.listen().
Assurez-vous de remplacer 'chemin/vers/votre/fichier.html' par le chemin réel
de votre fichier HTML.
Function (err, data) ????
La fonction de rappel (err, data) est utilisée pour traiter les résultats d'une
opération asynchrone dans Node.js. Lorsqu'une opération asynchrone est effectuée,
telle que la lecture d'un fichier, l'envoi d'une requête HTTP ou la connexion à une
base de données, elle peut prendre du temps pour s'exécuter. Au lieu de bloquer
l'exécution du programme, Node.js permet de spécifier une fonction de rappel qui
sera exécutée une fois que l'opération asynchrone est terminée.
Dans le cas spécifique de fs.readFile(), la fonction de rappel prend deux
arguments : err et data. Voici comment cela fonctionne :
javascriptCopy code
fs.readFile ('chemin/vers/votre/fichier.html', 'utf8', function (err,
data) {
if (err) {
// Gestion des erreurs
} else {
// Traitement des données lues
}
Si une erreur se produit lors de la lecture du fichier, la fonction de rappel est appelée
avec l'objet d'erreur err en tant que premier argument. Vous pouvez utiliser cet
argument pour gérer les erreurs et effectuer des actions appropriées, par exemple
renvoyer un message d'erreur au client.
Si la lecture du fichier est réussie, la fonction de rappel est appelée avec les données
lues en tant que deuxième argument data. Vous pouvez utiliser cet argument pour
traiter les données, par exemple les renvoyer au client ou les manipuler d'une autre
manière.
Il est important de noter que dans le cas des fonctions de rappel, le premier
argument (err dans ce cas) est généralement utilisé pour vérifier s'il y a une erreur,
tandis que les arguments suivants ( data dans ce cas) contiennent les résultats de
l'opération asynchrone.
Cela permet de gérer de manière efficace les opérations asynchrones dans Node.js,
en évitant le blocage du programme et en permettant l'exécution d'autres tâches
pendant que l'opération asynchrone est en cours.
Créer des fichiers
Le module File System propose des méthodes pour créer de nouveaux
fichiers :
fs.appendFile()
fs.open()
fs.writeFile()
La fs.appendFile()méthode ajoute le contenu spécifié à un fichier. Si le fichier
n'existe pas, le fichier sera créé :
Exemple
Créez un nouveau fichier en utilisant la méthode appendFile() :
var fs = require('fs');
fs.appendFile('mynewfile1.txt', 'Hello content!', function (err) {
if (err) throw err;
console.log('Saved!');
});
Exemple d'exécution »
La fs.open()méthode prend un "drapeau" comme deuxième argument, si le
drapeau est "w" pour "écriture", le fichier spécifié est ouvert en écriture. Si le
fichier n'existe pas, un fichier vide est créé :
Exemple
Créez un nouveau fichier vide en utilisant la méthode open() :
var fs = require('fs');
fs.open('mynewfile2.txt', 'w', function (err, file) {
if (err) throw err;
console.log('Saved!');
});
Exemple d'exécution »
La fs.writeFile()méthode remplace le fichier spécifié et son contenu s'il
existe. Si le fichier n'existe pas, un nouveau fichier, contenant le contenu
spécifié, sera créé :
Exemple
Créez un nouveau fichier en utilisant la méthode writeFile() :
var fs = require('fs');
fs.writeFile('mynewfile3.txt', 'Hello content!', function (err) {
if (err) throw err;
console.log('Saved!');
});
Exemple d'exécution »
Mettre à jour les fichiers
Le module File System dispose de méthodes pour mettre à jour les fichiers :
fs.appendFile()
fs.writeFile()
La fs.appendFile()méthode ajoute le contenu spécifié à la fin du fichier
spécifié :
Exemple
Ajouter "Ceci est mon texte." à la fin du fichier "monnouveaufichier1.txt":
var fs = require('fs');
fs.appendFile('mynewfile1.txt', ' This is my text.', function (err) {
if (err) throw err;
console.log('Updated!');
});
Exemple d'exécution »
La fs.writeFile()méthode remplace le fichier et le contenu spécifiés :
Exemple
Remplacez le contenu du fichier "monnouveaufichier3.txt":
var fs = require('fs');
fs.writeFile('mynewfile3.txt', 'This is my text', function (err) {
if (err) throw err;
console.log('Replaced!');
});
Exemple d'exécution »
Supprimer les fichiers
Pour supprimer un fichier avec le module File System, utilisez
la fs.unlink() méthode.
La fs.unlink()méthode supprime le fichier spécifié :
Exemple
Supprimez "monnouveaufichier2.txt":
var fs = require('fs');
fs.unlink('mynewfile2.txt', function (err) {
if (err) throw err;
console.log('File deleted!');
});
Exemple d'exécution »
Renommer les fichiers
Pour renommer un fichier avec le module File System, utilisez
la fs.rename() méthode.
La fs.rename()méthode renomme le fichier spécifié :
Exemple
Renommez "mynewfile1.txt" en "myrenamedfile.txt":
var fs = require('fs');
fs.rename('mynewfile1.txt', 'myrenamedfile.txt', function (err) {
if (err) throw err;
console.log('File Renamed!');
});
Exemple d'exécution »