Node fournit des modules de programmation réseau riches
| Module de nœud | protocole |
| filet | TCP |
| dgram | UDP |
| http | Http |
| https | Https |
Les événements de service TCP sont divisés en deux catégories suivantes
(1) Événement serveur
Pour les serveurs créés via net.createServer (), il s'agit d'une instance EventEmitter, et il y a plusieurs événements personnalisés:
Écoute: déclenché après avoir appelé écouter () pour lier le port ou le socket de domaine, abrégé sous le nom de server.Listen (port, écouteur), passant par le deuxième paramètre.
Connexion: déclenché lorsque chaque prise client est connectée au serveur. Le moyen simple consiste à passer le dernier paramètre via net.createServer ().
Fermer: déclenché lorsque le serveur est fermé. Après avoir appelé server.close (), le serveur cessera d'accepter de nouvelles connexions de socket, mais conservera les connexions existantes et attendre que toutes les connexions soient déconnectées, cet événement sera déclenché.
Erreur: cet événement sera déclenché lorsqu'une exception se produira sur le serveur.
(2) Événement de connexion
Le serveur peut maintenir des connexions avec plusieurs clients en même temps, un objet de flux écrite et lisible typique pour chaque connexion. Les objets de flux peuvent être utilisés pour la communication entre le serveur et le client. Ils peuvent lire les données envoyées d'une extrémité d'une extrémité à travers des événements de données, ou envoyer des données d'une extrémité à l'autre extrémité via la méthode écrite ().
Données: Lorsqu'un côté appelle Write () pour envoyer des données, l'autre côté déclenchera l'événement de données. Les données adoptées par l'événement sont les données envoyées par write ().
Fin: Cet événement sera déclenché lorsque l'une ou l'autre fin de la connexion envoie des données FIN.
Connect: Cet événement est utilisé pour le client et sera licencié lorsque la prise se connectera avec succès au serveur.
Drain: lorsque les appels de l'une ou l'autre fin écrivent () pour envoyer des données, l'extrémité actuelle déclenche l'événement.
Erreur: lorsque l'exception est envoyée
Fermer: tiré lorsque la prise est complètement fermée
Timeout: lorsque la connexion n'est plus active après une certaine période de temps, déclenchant l'événement pour informer l'utilisateur que la connexion est inactive.
TCP a certaines stratégies d'optimisation pour les petits paquets de données dans le réseau: algorithme Nagle, qui n'est déclenché que lorsque les données atteignent une certaine quantité.
Services UDP
UDP est appelé le protocole de paquet utilisateur, et ce n'est pas un service axé sur la connexion. UDP dans Node n'est qu'une instance EventEmitter, pas une instance de flux, avec les événements personnalisés suivants:
(1) Message: Lorsque la prise UDP surveille le port de carte réseau et reçoit le message, les données transportées par le déclencheur sont l'objet tampon de message et une information d'adresse distante.
(2) Écoute: cet événement est déclenché lorsque la prise UDP commence à écouter.
(3) Close: Cet événement est déclenché lorsque la méthode Close () est appelée, et l'événement de message n'est plus déclenché. Si l'événement de message doit être déclenché à nouveau, il doit être référé.
(4) Erreur: déclenché lorsqu'une exception se produit. S'il n'est pas écouté, il sera lancé directement, provoquant la sortie du processus.
Service http
Le module HTTP dans le nœud hérite du serveur TCP (module net), qui peut maintenir la connexion avec plusieurs clients. Puisqu'il ne crée pas de threads pour chaque connexion et maintient une empreinte de mémoire très faible, il peut atteindre une concurrence élevée. La différence entre le service HTTP et le service TCP est qu'après l'activation de Keepalive, une session TCP peut être utilisée pour plusieurs demandes et réponses. Le service TCP est utilisé comme unité de connexion et le service HTTP est utilisé comme unité de demande. Le module HTTP consiste à résumer le processus de connexion à la demande.
Le module HTTP résume la lecture et l'écriture de la prise utilisée pour se connecter aux objets ServerRequest et ServerResponse, correspondant respectivement aux opérations de demande et de réponse.
(1) Demande HTTP
Pour l'opération de lecture de la connexion TCP, le module HTTP le résume en tant qu'objet ServerRequest. Par exemple, la partie d'en-tête req.method, req.url, req.heders, la pièce de données du système de message est abstraite dans un objet de flux en lecture seule. Si la logique métier doit lire des données dans le système de messages, le flux de données doit être terminé avant que l'opération puisse être effectuée.
(2) Réponse HTTP
La réponse HTTP résume l'opération d'écriture de la connexion sous-jacente, qui peut être considérée comme un objet de flux écrit.
Les méthodes d'information d'en-tête du paquet de réponse: res.setheader () et res.writeHeader (). Vous pouvez se faire plusieurs fois pour le réglage, mais vous devez appeler WriteHeader pour écrire sur la connexion avant qu'il ne prenne effet.
Méthodes partielles du message: res.write () et res.end () méthodes
(3) Événement de serveur HTTP
Connexion: lorsque le client établit une connexion TCP avec le serveur, un événement de connexion est déclenché
Demande: Après avoir établi une connexion TCP, le module HTTP résume la demande HTTP et la réponse HTTP du flux de données. Lorsque les données de demande sont envoyées au serveur, l'événement est déclenché après l'analyse de l'en-tête de demande HTTP; Après res.end (), la connexion TCP peut être utilisée pour la demande suivante.
Fermer: appeler la méthode Server.cose pour arrêter de recevoir de nouvelles connexions, déclenchant cet événement lorsque toutes les connexions existantes sont déconnectées.
CheckContinue: Lorsque certains clients envoient des données plus grandes, ils envoient d'abord une demande avec ATTENDE: 100 Continue dans l'en-tête vers le serveur, et le service déclenche l'événement;
Connexion: déclenché lorsque le client initie une demande de connexion
Mise à niveau: lorsque le client nécessite une mise à niveau du protocole de connexion, il doit négocier avec le serveur. Le client apportera le champ Updagrade dans l'en-tête de demande.
ClientError: le client connecté envoie une erreur et l'erreur est transmise au serveur et l'événement est déclenché.
(4) Client HTTP
Le module HTTP fournit HTTP.Request (Options, Connect) pour construire des clients HTTP.
Le client HTTP est similaire au serveur. Dans l'objet ClientRequest, son événement est appelé réponse. Lorsque le ClientRequest analyse le message de réponse, l'événement de réponse sera déclenché dès que l'en-tête de réponse sera analysé. Dans le même temps, une réponse client d'objet de réponse est transmise pour l'opération. Le message de réponse ultérieur est fourni dans un flux en lecture seule.
(5) Événements clients HTTP
Réponse: Le client correspondant à l'événement de demande sur le serveur déclenche l'événement lorsque la demande est répondue après l'émission de la demande.
Socket: tiré lorsque la connexion établie dans le pool de connexion sous-jacente est attribuée à l'objet de demande actuel;
Connexion: Lorsque le client envoie une demande de connexion au serveur, si le serveur répond à 200 code d'état, le client déclenchera l'événement.
Mise à niveau: lorsque le client bénéficie de la demande de mise à niveau lorsque le client jouit du serveur envoie une demande de mise à niveau, si le serveur répond à l'état des protocoles de commutation 101, le client déclenchera l'événement.
Continuez: Une fois que le client a lancé l'attente: 100 informations sur les informations sur le serveur, il tente d'envoyer des données plus grandes. Si le serveur répond à l'état de poursuite des 100, le serveur déclenchera l'événement
Services WebSocket
WebSocket est apparu pour la première fois comme une caractéristique importante de HTML5, et présente les avantages suivants par rapport à HTTP:
(1) Le client et le serveur n'établissent une connexion TCP qu'une seule fois, et moins de connexions peuvent être utilisées
(2) WebSocket Server peut appuyer sur les données vers le client, ce qui est beaucoup plus flexible et efficace que le mode de réponse de la demande HTTP
(3) en-tête de protocole plus léger pour réduire la transmission des données
Il n'y a pas de bibliothèque intégrée WebSocket dans Node, mais le module WS de la communauté résume l'implémentation sous-jacente de WebSocket comme le célèbre Socket.io