Servidor node.js http
Node.js nos permite crear servidores y clientes utilizando la API de bajo nivel del módulo HTTP. Cuando comenzamos a aprender nodo, todos encontramos el siguiente código:
La copia del código es la siguiente:
var http = require ('http');
http.createServer (function (req, res) {
res.end ('Hello World/n');
}). Escuchar (3000, "127.0.0.1");
console.log ("Funning del servidor en http://127.0.0.1:3000");
Este código incluye información sobre el módulo HTTP, que significa:
1. Solicite el módulo HTTP del núcleo de `node.js` y asigne una variable para usar en futuros scripts.
El script puede acceder a algunos métodos para usar HTTP a través de `node.js`.
2. Cree un nuevo objeto de servidor web usando `CreateServer`
3. El script pasa una función anónima al servidor, diciéndole al objeto del servidor web lo que sucede cuando recibe una solicitud
4. La línea de script 4 define el puerto y el host del servidor web, lo que significa que se puede usar `http: //127.0.0.1: 3000`
Visite el servidor
Encabezado http
Para cada solicitud y respuesta HTTP, se envía un encabezado HTTP. El encabezado HTTP envía información adicional, incluido el tipo de contenido, la fecha en que el servidor envió la respuesta y el código de estado HTTP
El encabezado HTTP contiene mucha información. La siguiente es la información sobre el encabezado HTTP incluido en mi página de inicio de Baidu:
Como he agregado más sitios web a mi página de inicio de Baidu, los datos aquí pueden ser diferentes de los de los lectores. De esto podemos ver que Baidu es un servidor web y BWS/1.1
A continuación se muestra la información del encabezado HTTP del código anterior en este momento:
Redirección en node.js
En el nodo, podemos crear fácilmente un servidor simple para redirigir a los visitantes a otra página web, con las siguientes pautas:
1. Envíe un código de respuesta 301 al cliente, diciéndole al cliente que el recurso se ha trasladado a otra ubicación;
2. Envíe un encabezado de ubicación para decirle al cliente dónde redirigir.
Los códigos relevantes son los siguientes:
La copia del código es la siguiente:
var http = require ('http');
http.createServer (function (req, res) {
res.Writehead (301, {
'Ubicación': 'http: //example-2.com/web'
});
res.end ();
}). Escuchar (3000, '127.0.0.1');
console.log ("Funning del servidor en http://127.0.0.1:3000");
Abra el navegador y visite el http://127.0.0.1:3000 se redirigirá la página.
Responder a diferentes solicitudes
Node.js no solo puede crear una sola respuesta, sino que para múltiples tipos de solicitudes, necesitamos agregar algunas rutas a la aplicación. El nodo lo hace directo mediante el uso de módulos URL. El módulo URL nos permite leer la URL, analizarla y luego hacer algo con la salida.
La copia del código es la siguiente:
var url = require ('url');
var requestUrl = "http://example.com:1234/path?query=string#hash"
Ahora podemos analizar la URL solicitada y cortar el contenido de ella, por ejemplo, para obtener el nombre de host, podemos ingresar:
La copia del código es la siguiente:
url.parse (requestUrl) .hostName
En este momento, volverá a "Ejemplo.com"
Para obtener el número de puerto, puede ingresar:
La copia del código es la siguiente:
URL.Parse (requestUrl) .port
Volverá a "1234"
Módulo de evento
Node.js se considera la mejor manera de lograr la concurrencia. El módulo de eventos es el núcleo de Node.js, y muchos otros módulos lo usan para rodear la funcionalidad de la arquitectura de eventos. Dado que Node.js se ejecuta en un solo hilo, cualquier código sincrónico está bloqueado. Por lo tanto, al escribir el código Node.js, debemos considerar algunas reglas simples:
1. No bloquee - `node.js` está enhebrado, y si el código bloquea, todo lo demás se detiene
2. Retorno rápido: la operación debe volver rápidamente. Si no puede regresar rápidamente, debe migrarlo a otro proceso
El módulo de eventos permite a los desarrolladores configurar oyentes y procesadores para eventos. En el cliente JS podemos configurar un oyente para el evento de clic y luego hacer algo cuando ocurra el evento:
La copia del código es la siguiente:
var tar = document.getElementById ("objetivo");
tar.addeventListener ("hacer clic", function () {
alerta ("Haga clic en el evento Fired, se hizo clic en Target");
},FALSO);
Por supuesto, este es un ejemplo sin considerar la compatibilidad de IE, y los eventos de enfoque nodo.js son más comunes a los eventos de red, que incluyen:
1. Respuesta del servidor web
2. Lea los datos del archivo
3. Devuelve datos de la base de datos
Usando el módulo de eventos, primero necesitamos crear una nueva instancia de EventEmitter:
La copia del código es la siguiente:
var eventEmitter = request ('events'). EventEmitter;
var test = new EventEmitter ();
Una vez que se agrega el contenido anterior al código, puede agregar eventos y oyentes. Podemos enviar eventos de la siguiente manera, como:
La copia del código es la siguiente:
test.emit ('msg', 'el mensaje enviado por nodo');
El primer parámetro es una cadena que describe el evento para que pueda usarse para la coincidencia del oyente
Para recibir un mensaje, se debe agregar un oyente, lo que lo maneja cuando se activa el evento, por ejemplo:
La copia del código es la siguiente:
test.on ('Message', function (Data) {
console.log (datos);
});
La implementación básica del modo de escucha de eventos del módulo de eventos AddListener/ON, una vez, RemoVeListener, RemovealLlisteners, EMIT y otros modos básicos de escucha de eventos. No es lo mismo que los eventos en el árbol DOM front-end, porque no tiene comportamientos de eventos que pertenecen al DOM, como las burbujas, la captura de capa por capa, y no hay forma de manejar la entrega de eventos como PreventDefault (), stopPropagation (), stopimmediatepropagation (), etc., etc., etc.
1.Class: Events.EventEmitter: Obtenga la clase EventEmitter a través de requerir ('eventos'). EventEmitter.
2.Emister.on (evento, oyente): Agregue un oyente a la cola de la matriz de oyentes de un evento específico. Regrese al emisor, facilite la llamada de la cadena, lo mismo a continuación.
3.emitter.removelistener (evento, oyente) elimina un oyente de la matriz de oyentes de un evento
4.Emitter.listeners (evento) Devuelve la matriz de oyentes del evento especificado
Consulte la documentación de la API node.js para obtener más detalles
El siguiente código muestra un mensaje confidencial que puede autodestruirse en 5 segundos:
La copia del código es la siguiente:
var eventEmitter = request ('events'). EventEmitter;
var secretMessage = new EventEmitter ();
SecretMessage.on ('Message', function (Data) {
console.log (datos);
});
SecretMessage.on ('autodestruct', function () {
console.log ('¡El MSG está destruido!');
});
SecretMessage.emit ('Mensaje', 'Este es un mensaje secreto.
setTimeOut (function () {
secretMessage.emit ('autodestruct');
}, 5000);
En este guión, se envían dos eventos, con dos oyentes. Cuando el script se está ejecutando, el evento de mensaje ocurre y es procesado por el procesador "Mensaje"
EventEmitter se usa en todas partes en Node.js, por lo que es importante dominarlo. Node.js obtiene datos a través de operaciones de E/S y utiliza ampliamente el módulo de eventos para admitir la programación asíncrona
Preguntas frecuentes:
P: ¿Hay un límite en el número máximo de oyentes para un evento?
R: Por defecto, si el evento tiene 10 oyentes operando, emitirá una advertencia. Sin embargo, puede usar emitter.setMaxListener (n) para cambiar esta cantidad
P: ¿Puedo escuchar todos los eventos enviados?
Respuesta: No. Necesitamos crear un oyente para cada evento al que queramos responder