Maison interface Web js tutoriel Notes d'étude NodeJS programmation réseau_node.js

Notes d'étude NodeJS programmation réseau_node.js

May 16, 2016 pm 04:40 PM
nodejs 网络编程

Node fournit une multitude de modules de programmation réseau

Node模块 协议
net TCP
dgram UDP
http HTTP
https HTTPS

Les événements du service TCP sont divisés dans les deux catégories suivantes

(1), Événement serveur

Pour un serveur créé via net.createServer(), il s'agit d'une instance EventEmitter. Il existe les types d'événements personnalisés suivants :

écoute : déclenché après l'appel de Listen() pour lier un port ou un Domain Socket, en abrégé server.listen(port, Listener), transmis via le deuxième paramètre.

connexion : déclenchée lorsque chaque socket client se connecte au serveur. La manière concise de l'écrire est via net.createServer(), et le dernier paramètre est passé.

close : Déclenché lorsque le serveur est fermé. Après avoir appelé server.close(), le serveur cessera d'accepter de nouvelles connexions socket, mais conservera les connexions actuellement existantes. Cet événement sera déclenché une fois toutes les connexions déconnectées.

erreur : Cet événement sera déclenché lorsqu'une exception se produit sur le serveur.

(2), Événement de connexion

Le serveur peut maintenir des connexions avec plusieurs clients en même temps et constitue un objet Stream typique inscriptible et lisible pour chaque connexion. L'objet Stream peut être utilisé pour la communication entre le serveur et le client. Il peut lire des données d'une extrémité à l'autre via l'événement data, ou envoyer des données d'une extrémité à l'autre via la méthode write().

données : lorsqu'une extrémité appelle write() pour envoyer des données, l'autre extrémité déclenchera l'événement de données et les données transmises par l'événement sont les données envoyées par write()

end : cet événement sera déclenché lorsque l'une des extrémités de la connexion envoie des données FIN.

connect : Cet événement est utilisé pour le client et est déclenché lorsque le socket est connecté avec succès au serveur.

drain : lorsque l'une des extrémités appelle write() pour envoyer des données, la fin actuelle déclenche cet événement.

erreur : Envoyé en cas d'exception

fermer : Déclenché lorsque la prise est complètement fermée

timeout : Lorsque la connexion n'est plus active après un certain temps, cet événement est déclenché pour avertir l'utilisateur que la connexion est inactive.

TCP a une certaine stratégie d'optimisation pour les petits paquets de données dans le réseau : l'algorithme Nagle, qui se déclenche uniquement lorsque les données atteignent une certaine quantité.

Service UDP

UDP est appelé User Datagram Protocol, qui n'est pas un service orienté connexion. UDP dans Node est simplement une instance EventEmitter, pas une instance Stream, et comporte les événements personnalisés suivants :

(1) message : déclenché lorsque le socket UDP écoute le port de la carte réseau et reçoit un message. Les données transportées par le déclencheur sont l'objet Buffer du message et une information d'adresse distante.

(2) écoute : Cet événement est déclenché lorsque le socket UDP commence à écouter.

(3) close : Cet événement est déclenché lorsque la méthode close() est appelée, et l'événement message ne sera plus déclenché. Si vous devez déclencher à nouveau l'événement de message, vous devez le lier à nouveau.

(4) erreur : déclenchée lorsqu'une exception se produit. Si elle n'est pas surveillée, elle sera lancée directement pour provoquer la sortie du processus.

Service HTTP

Le module http de Node est hérité du serveur TCP (module net). Il peut maintenir des connexions avec plusieurs clients. Parce qu'il ne crée pas de threads pour chaque connexion et maintient une très faible utilisation de la mémoire, il peut atteindre une concurrence élevée. La différence entre le service HTTP et le service TCP réside dans le fait qu'une fois Keepalive activé, une session TCP peut être utilisée pour plusieurs requêtes et réponses. Les services TCP sont fournis dans des unités de connexion et les services HTTP sont fournis dans des unités de requête. Le module http encapsule le processus depuis la connexion jusqu'à la requête.

Le module http résume la lecture et l'écriture du socket utilisé pour la connexion aux objets ServerRequest et ServerResponse, qui correspondent respectivement aux opérations de requête et de réponse.

(1) Requête HTTP

Pour les opérations de lecture sur les connexions TCP, le module http les encapsule sous forme d'objets ServerRequest. Par exemple, la partie en-tête est req.method, req.url, req.headers et la partie données du corps du message est abstraite en tant qu'objet de flux en lecture seule. Si la logique métier doit lire les données dans le corps du message, elle est extraite. doit terminer le flux de données avant de pouvoir fonctionner.

(2) Réponse HTTP

La réponse HTTP encapsule l'opération d'écriture de la connexion sous-jacente et peut être considérée comme un objet de flux inscriptible.

Méthodes d'informations d'en-tête du message de réponse : méthodes res.setHeader() et res.writeHeader(), vous pouvez définirHeader plusieurs fois, mais vous devez appeler writeHeader pour écrire la connexion et prendre effet.

Une partie des méthodes du corps du message : méthodes res.write() et res.end()

(3) événements du serveur HTTP

Connexion : Lorsque le client établit une connexion TCP avec le serveur, un événement de connexion est déclenché

requête : après avoir établi une connexion TCP, la couche inférieure du module http extrait la requête HTTP et la réponse HTTP du flux de données. Lorsque les données de la requête sont envoyées au serveur, l'événement est déclenché après avoir analysé l'en-tête de la requête HTTP. ; dans res.end() Après cela, la connexion TCP est disponible pour la prochaine requête.

close : Appelez la méthode server.close pour arrêter de recevoir de nouvelles connexions. Cet événement est déclenché lorsque toutes les connexions existantes sont déconnectées.

checkContinue : Lorsque certains clients envoient des données volumineuses, ils envoient d'abord une requête avec Expect : 100-continue dans l'en-tête au serveur, et le service déclenche cet événement

 ;

connect : déclenché lorsque le client initie une requête CONNECT

mise à niveau : lorsque le client demande la mise à niveau du protocole de connexion, il doit négocier avec le serveur, et le client apportera le champ Updagrade dans l'en-tête de la demande

clientError : Le client connecté envoie une erreur, et lorsque l'erreur est transmise au serveur, cet é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 ClientRequest analyse le message de réponse, l'événement de réponse est déclenché dès que l'en-tête de réponse est analysé, et un objet de réponse ClientResponse est. transmis pour opération. Les messages de réponse suivants sont fournis sous forme de flux en lecture seule.

(5) Événements clients HTTP

réponse : Cet événement est déclenché lorsque le client correspondant à l'événement de requête du serveur reçoit une réponse après l'émission de la requête.

socket : déclenché lorsqu'une connexion établie dans le pool de connexions sous-jacent est affectée à l'objet de requête actuel

 ;

connect : lorsque le client envoie une requête CONNECT au serveur, si le serveur répond avec un code d'état 200, le client déclenchera cet événement.

mise à niveau : lorsque le client envoie une demande de mise à niveau au serveur, si le serveur répond avec l'état 101 Switching Protocols, le client déclenchera cet événement.

continue : une fois que le client a envoyé un en-tête Expect: 100-continue au serveur, il tente d'envoyer des données plus volumineuses. Si le serveur répond avec un statut 100 continue, le serveur déclenchera cet événement

.

Service WebSocket

WebSocket est apparu pour la première fois comme une fonctionnalité importante du HTML5. Par rapport au HTTP, il présente les avantages suivants :

(1) Le client et le serveur n'établissent qu'une seule connexion TCP, donc moins de connexions peuvent être utilisées

(2) Le serveur WebSocket peut transmettre des données au client, ce qui est bien plus flexible et efficace que le mode de réponse aux requêtes HTTP

(3) En-tête de protocole plus léger, réduisant la transmission de données

Il n'y a pas de bibliothèque WebSocket intégrée dans Node, mais le module ws de la communauté encapsule l'implémentation sous-jacente de WebSocket comme le fameux socket.io

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
2 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
4 Il y a quelques semaines By DDD
R.E.P.O. Meilleurs paramètres graphiques
2 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
2 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Quelles sont les bibliothèques open source C++ ? Quelles sont les bibliothèques open source C++ ? Apr 22, 2024 pm 05:48 PM

C++ fournit un riche ensemble de bibliothèques open source couvrant les fonctions suivantes : structures de données et algorithmes (Standard Template Library) multithreading, expressions régulières (Boost) algèbre linéaire (Eigen) interface utilisateur graphique (Qt) vision par ordinateur (OpenCV) apprentissage automatique (TensorFlow) Chiffrement (OpenSSL) Compression de données (zlib) Programmation réseau (libcurl) Gestion de base de données (sqlite3)

Comment connecter Nodejs à la base de données MySQL Comment connecter Nodejs à la base de données MySQL Apr 21, 2024 am 06:13 AM

Pour vous connecter à une base de données MySQL, vous devez suivre ces étapes : Installez le pilote mysql2. Utilisez mysql2.createConnection() pour créer un objet de connexion contenant l'adresse de l'hôte, le port, le nom d'utilisateur, le mot de passe et le nom de la base de données. Utilisez connection.query() pour effectuer des requêtes. Enfin, utilisez connection.end() pour mettre fin à la connexion.

Comment les fonctions C++ gèrent-elles les requêtes DNS dans la programmation réseau ? Comment les fonctions C++ gèrent-elles les requêtes DNS dans la programmation réseau ? Apr 27, 2024 pm 06:39 PM

La bibliothèque standard C++ fournit des fonctions pour gérer les requêtes DNS dans la programmation réseau : gethostbyname() : recherche des informations sur l'hôte en fonction du nom d'hôte. gethostbyaddr() : recherche des informations sur l'hôte en fonction de l'adresse IP. dns_lookup() : résout le DNS de manière asynchrone.

Y a-t-il une grande différence entre nodejs et java ? Y a-t-il une grande différence entre nodejs et java ? Apr 21, 2024 am 06:12 AM

Les principales différences entre Node.js et Java résident dans la conception et les fonctionnalités : Piloté par les événements ou piloté par les threads : Node.js est piloté par les événements et Java est piloté par les threads. Monothread ou multithread : Node.js utilise une boucle d'événements monothread et Java utilise une architecture multithread. Environnement d'exécution : Node.js s'exécute sur le moteur JavaScript V8, tandis que Java s'exécute sur la JVM. Syntaxe : Node.js utilise la syntaxe JavaScript, tandis que Java utilise la syntaxe Java. Objectif : Node.js convient aux tâches gourmandes en E/S, tandis que Java convient aux applications de grande entreprise.

Débuter avec les bases de Java jusqu'aux applications pratiques : Comment démarrer rapidement ? Débuter avec les bases de Java jusqu'aux applications pratiques : Comment démarrer rapidement ? May 08, 2024 am 08:30 AM

Guide d'entrée en pratique Java : comprenant une introduction à la syntaxe de base (variables, opérateurs, flux de contrôle, objets, classes, méthodes, héritage, polymorphisme, encapsulation), les bibliothèques de classes Java de base (gestion des exceptions, collections, génériques, flux d'entrée/sortie, programmation réseau, API date et heure), cas pratiques (application calculatrice, incluant exemples de code).

Comment les fonctions C++ implémentent-elles la sécurité réseau dans la programmation réseau ? Comment les fonctions C++ implémentent-elles la sécurité réseau dans la programmation réseau ? Apr 28, 2024 am 09:06 AM

Les fonctions C++ peuvent assurer la sécurité du réseau dans la programmation réseau. Les méthodes incluent : 1. L'utilisation d'algorithmes de cryptage (openssl) pour crypter la communication ; 2. L'utilisation de signatures numériques (cryptopp) pour vérifier l'intégrité des données et l'identité de l'expéditeur ; 3. La défense contre les attaques de scripts inter-sites ; ( htmlcxx) pour filtrer et nettoyer les entrées de l'utilisateur.

Quelle est la relation entre nodejs et npm ? Quelle est la relation entre nodejs et npm ? Apr 21, 2024 am 06:09 AM

Node.js est un environnement d'exécution JavaScript et npm est son gestionnaire de packages. Les deux travaillent ensemble pour permettre aux développeurs d'écrire des programmes côté serveur en JavaScript, d'utiliser des modules tiers et de gérer facilement les modules.

Pour quels projets nodejs est-il adapté ? Pour quels projets nodejs est-il adapté ? Apr 21, 2024 am 05:45 AM

Node.js convient aux types de projets suivants : Applications réseau et serveur Applications basées sur des événements Applications en temps réel Applications gourmandes en données Outils et scripts en ligne de commande Microservices légers

See all articles