Node.js Http Server
Node.js nous permet de créer des serveurs et des clients en utilisant l'API de bas niveau du module HTTP. Lorsque nous avons commencé à apprendre le nœud, nous avons tous rencontré le code suivant:
La copie de code est la suivante:
var http = require ('http');
http.createServer (fonction (req, res) {
res.end ('Hello World / N');
}). écouter (3000, "127.0.0.1");
console.log ("Funning Server sur http://127.0.0.1:3000");
Ce code comprend des informations sur le module HTTP, ce qui signifie:
1. Demandez le module HTTP dans le cœur de `Node.js` et affectez une variable à utiliser dans les futurs scripts.
Le script peut accéder à certaines méthodes pour utiliser HTTP via `node.js`.
2. Créez un nouvel objet de serveur Web à l'aide de `CreateServer`
3. Le script passe une fonction anonyme au serveur, indiquant à l'objet du serveur Web ce qui se passe chaque fois qu'il reçoit une demande
4. La ligne de script 4 définit le port et l'hôte du serveur Web, ce qui signifie que `http: //127.0.0.1: 3000` peut être utilisé
Visitez le serveur
En-tête HTTP
Pour chaque demande et réponse HTTP, un en-tête HTTP est envoyé. L'en-tête HTTP envoie des informations supplémentaires, y compris le type de contenu, la date à laquelle le serveur a envoyé la réponse et le code d'état HTTP
L'en-tête HTTP contient beaucoup d'informations. Ce qui suit est les informations sur l'en-tête HTTP incluses dans ma page d'accueil de Baidu:
Comme j'ai ajouté plus de sites Web à ma page d'accueil de Baidu, les données ici peuvent être différentes de celles des lecteurs. À partir de cela, nous pouvons voir que Baidu est un serveur Web et BWS / 1.1
Vous trouverez ci-dessous les informations d'en-tête HTTP du code ci-dessus tout à l'heure:
Redirection dans Node.js
Dans Node, nous pouvons facilement créer un serveur simple pour rediriger les visiteurs vers une autre page Web, avec les directives suivantes:
1. Envoyez un code de réponse 301 au client, indiquant au client que la ressource a été déplacée vers un autre endroit;
2. Envoyez un en-tête d'emplacement pour dire au client où rediriger.
Les codes pertinents sont les suivants:
La copie de code est la suivante:
var http = require ('http');
http.createServer (fonction (req, res) {
res.writehead (301, {
«Emplacement»: «http: //example-2.com/web»
});
res.end ();
}). écouter (3000, '127.0.0.1');
console.log ("Funning Server sur http://127.0.0.1:3000");
Ouvrez le navigateur et visitez la page http://127.0.0.1:3000 sera redirigée.
Répondre à différentes demandes
Node.js peut non seulement créer une seule réponse, mais pour plusieurs types de demandes, nous devons ajouter des itinéraires à l'application. Le nœud rend cela simple en utilisant des modules URL. Le module URL nous permet de lire l'URL, de l'analyser puis de faire quelque chose avec la sortie.
La copie de code est la suivante:
var url = require ('url');
var demandeurl = "http://example.com:1234/path?query=string#hash"
Maintenant, nous pouvons analyser l'URL demandée et en couper le contenu, par exemple, pour obtenir le nom d'hôte, nous pouvons entrer:
La copie de code est la suivante:
url.parse (requestUrl) .hostname
Pour le moment, il reviendra à "Example.com"
Pour obtenir le numéro de port, vous pouvez entrer:
La copie de code est la suivante:
url.parse (demandeurl) .port
Il reviendra à "1234"
Module d'événement
Node.js est considéré comme le meilleur moyen d'atteindre la concurrence. Le module d'événements est le cœur de Node.js, et de nombreux autres modules l'utilisent pour entourer la fonctionnalité d'architecture des événements. Étant donné que Node.js s'exécute dans un seul thread, tout code synchrone est bloqué. Par conséquent, lors de l'écriture du code Node.js, nous devons considérer certaines règles simples:
1. Ne bloquez pas - `node.js` est unique, et si le code bloque, tout le reste s'arrête
2. Retour rapide - L'opération doit revenir rapidement. Si vous ne pouvez pas revenir rapidement, vous devez le migrer vers un autre processus
Le module d'événements permet aux développeurs de configurer des auditeurs et des processeurs pour les événements. Dans Client JS, nous pouvons définir un écouteur pour l'événement de clic, puis faire quelque chose lorsque l'événement se produit:
La copie de code est la suivante:
var tar = document.getElementById ("Target");
tar.addeventListener ("click", function () {
alert ("Click Event tiré, la cible a été cliquée");
},FAUX);
Bien sûr, il s'agit d'un exemple sans considérer la compatibilité IE, et les événements de mise au point Node.js sont plus courants aux événements de réseau, notamment:
1. Réponse du serveur Web
2. Lire les données du fichier
3. Renvoie les données de la base de données
En utilisant le module d'événements, nous devons d'abord créer une nouvelle instance EventEmitter:
La copie de code est la suivante:
var eventEMmitter = require ('Events'). EventEMmitter;
var test = new EventEmitter ();
Une fois le contenu ci-dessus ajouté au code, vous pouvez ajouter des événements et des auditeurs. Nous pouvons envoyer des événements comme suit, tels que:
La copie de code est la suivante:
test.emit («msg», «le message envoyé par nœud»);
Le premier paramètre est une chaîne qui décrit l'événement afin qu'il puisse être utilisé pour la correspondance de l'auditeur
Pour recevoir un message, un auditeur doit être ajouté, qui le gère lorsque l'événement est déclenché, par exemple:
La copie de code est la suivante:
test.on ('message', fonction (data) {
console.log (données);
});
La mise en œuvre du mode d'écoute d'événements de base du module d'événements addListener / on, une fois, supprime, removealLlistenners, émit et autres modes d'écoute d'événements de base. Ce n'est pas la même chose que les événements de l'arbre Dom frontal, car il n'a pas de comportements d'événements qui appartiennent au DOM tel que les bulles, la couche de couche par couche, et il n'y a aucun moyen de gérer la livraison d'événements tels que preuveDault (), stopPropagation (), stopMmmediatEpropagation (), etc.
1.Class: events.Eventitteter: Obtenez la classe EventEmitter via require («Events»). EventEmitter.
2.Emiter.on (événement, écouteur): Ajoutez un auditeur à la queue du tableau d'écouteur d'un événement spécifique. Retour à l'émetteur, faciliter l'appel de la chaîne, la même ci-dessous.
3.Emitter.RemoveListener (événement, auditeur) Supprime un auditeur du tableau d'écouteur d'un événement
4.Emitter.Listeners (événement) Renvoie le tableau des auditeurs de l'événement spécifié
Voir la documentation de l'API Node.js pour plus de détails
Le code suivant montre un message confidentiel qui peut s'auto-destruction dans les 5 secondes:
La copie de code est la suivante:
var eventEMmitter = require ('Events'). EventEMmitter;
var SecretMessage = new EventEMmitter ();
SecretMessage.on ('Message', fonction (données) {
console.log (données);
});
SecretMessage.on ('auto-destruct', fonction () {
console.log («Le msg est détruit!»);
});
SecretMessage.Emit («Message», «Il s'agit d'un message secret.
setTimeout (function () {
SecretMessage.Emit («Auto-destruction»);
}, 5000);
Dans ce script, deux événements sont envoyés, avec deux auditeurs. Lorsque le script est en cours d'exécution, l'événement de message se produit et est traité par le processeur "Message"
EventEmitter est utilisé partout dans Node.js, il est donc important de le maîtriser. Node.js obtient des données via des opérations d'E / S et utilise largement le module d'événements pour prendre en charge la programmation asynchrone
FAQ:
Q: Y a-t-il une limite sur le nombre maximum d'auditeurs pour un événement?
R: Par défaut, si l'événement dispose de 10 auditeurs, il émettra un avertissement. Cependant, vous pouvez utiliser Emitte.SetMaxListener (n) pour modifier cette quantité
Q: Puis-je écouter tous les événements envoyés?
Réponse: Non. Nous devons créer un auditeur pour chaque événement auquel nous voulons répondre