El nodo proporciona ricos módulos de programación de red
| Módulo de nodo | protocolo |
| neto | TCP |
| dgram | UDP |
| http | Http |
| https | Https |
Los eventos de servicio TCP se dividen en las siguientes dos categorías
(1) Evento del servidor
Para los servidores creados a través de net.createServer (), es una instancia de eventEMitter, y hay varios eventos personalizados:
Escuchar: activado después de llamar a escuchar () para unir el puerto o el socket de dominio, abreviado como servidor.listen (puerto, oyente), pasó a través del segundo parámetro.
Conexión: activado cuando cada socket de cliente está conectado al servidor. La forma simple es pasar el último parámetro a través de net.createServer ().
Cerrar: activado cuando el servidor está cerrado. Después de llamar a Server.Close (), el servidor dejará de aceptar nuevas conexiones de socket, pero mantenga las conexiones existentes actualmente y espere a que se desconecten todas las conexiones, este evento se activará.
Error: este evento se activará cuando ocurra una excepción en el servidor.
(2) Evento de conexión
El servidor puede mantener conexiones con múltiples clientes al mismo tiempo, un objeto de flujo de escritura y legible típico para cada conexión. Los objetos de transmisión se pueden usar para la comunicación entre el servidor y el cliente. Pueden leer datos enviados desde un extremo desde un extremo a través de eventos de datos, o enviar datos de un extremo al otro extremo a través del método Write ().
Datos: Cuando un lado llama a Write () para enviar datos, el otro lado activará el evento de datos. Los datos aprobados por el evento son los datos enviados por Write ().
Fin: este evento se activará cuando cualquier extremo de la conexión envíe datos de aleta.
Connect: este evento se utiliza para el cliente y se disparará cuando el socket se conecta correctamente al servidor.
Drene: Cuando cualquier extremo llame a Write () para enviar datos, el final actual desencadena el evento.
Error: cuando se envía la excepción
Cerrar: disparado cuando el enchufe está completamente cerrado
Tiempo de espera: cuando la conexión ya no está activa después de un cierto período de tiempo, activando el evento para notificar al usuario que la conexión está inactiva.
TCP tiene ciertas estrategias de optimización para pequeños paquetes de datos en la red: algoritmo Nagle, que se desencadena solo cuando los datos alcanzan una cierta cantidad.
Servicios de UDP
UDP se llama Protocolo de paquete de usuario, y no es un servicio orientado a la conexión. UDP en el nodo es solo una instancia de EventEmitter, no una instancia de transmisión, con los siguientes eventos personalizados:
(1) Mensaje: cuando el socket UDP monitorea el puerto de la tarjeta de red y recibe el mensaje, los datos llevados por el disparador son el objeto de búfer de mensajes y una información de dirección remota.
(2) Escuchar: este evento se activa cuando el enchufe UDP comienza a escuchar.
(3) Cerrar: este evento se activa cuando se llama el método Close () y el evento del mensaje ya no se activa. Si el evento de mensaje debe activarse nuevamente, debe ser rebelde.
(4) Error: activado cuando ocurre una excepción. Si no se escucha, se lanzará directamente, lo que provocará que el proceso salga.
Servicio HTTP
El módulo HTTP en el nodo hereda del servidor TCP (módulo neto), que puede mantener la conexión con varios clientes. Dado que no crea hilos para cada conexión y mantiene una huella de memoria muy baja, puede lograr una alta concurrencia. La diferencia entre el servicio HTTP y el servicio TCP es que después de que KeepAlive esté habilitado, se puede utilizar una sesión TCP para múltiples solicitudes y respuestas. El servicio TCP se utiliza como unidad para la conexión, y el servicio HTTP se utiliza como unidad para la solicitud. El módulo HTTP es encapsular el proceso de conexión a la solicitud.
El módulo HTTP abstrae la lectura y la escritura del socket utilizada para conectarse a serverRequest y serverResponse objetos, correspondientes a las operaciones de solicitud y respuesta, respectivamente.
(1) Solicitud de HTTP
Para la operación de lectura de la conexión TCP, el módulo HTTP lo encapsula como un objeto ServerRequest. Por ejemplo, la parte del encabezado req.method, req.url, req.headers, la parte de datos del sistema de mensajes se abstrae en un objeto de transmisión de solo lectura. Si la lógica empresarial necesita leer datos en el sistema de mensajes, el flujo de datos debe completarse antes de que se pueda realizar la operación.
(2) Respuesta HTTP
La respuesta HTTP encapsula la operación de escritura de la conexión subyacente, que puede considerarse como un objeto de flujo de escritura.
Los métodos de información del encabezado del paquete de respuesta: res.setheader () y res.writeader () métodos. Puede Setheader varias veces para configurar, pero debe llamar a WriteHeader para escribir a la conexión antes de que surja con efecto.
Métodos parciales del mensaje: res.write () y res.end () métodos
(3) Evento del servidor HTTP
Conexión: cuando el cliente establece una conexión TCP con el servidor, se desencadena un evento de conexión
Solicitud: Después de establecer una conexión TCP, el módulo HTTP abstrae la solicitud HTTP y la respuesta HTTP del flujo de datos. Cuando los datos de solicitud se envían al servidor, el evento se activa después de analizar el encabezado de solicitud HTTP; Después de res.end (), la conexión TCP se puede usar para la siguiente solicitud.
Cerrar: llamar al método del servidor. Claro para dejar de recibir nuevas conexiones, activando este evento cuando todas las conexiones existentes están desconectadas.
Comprobación de verificación: cuando algunos clientes envían datos más grandes, primero envían una solicitud con la esperanza: 100 continios en el encabezado al servidor, y el servicio desencadena el evento;
Conectar: activado cuando el cliente inicia una solicitud de conexión
Actualización: cuando el cliente requiere una actualización del protocolo de conexión, debe negociar con el servidor. El cliente traerá el campo Updagrade en el encabezado de solicitud.
ClientError: el cliente conectado envía un error y el error se transmite al servidor y el evento se activa.
(4) Cliente HTTP
El módulo HTTP proporciona http.request (opciones, conectar) para construir clientes HTTP.
El cliente HTTP es similar al servidor. En el objeto ClientRequest, su evento se llama respuesta. Cuando el ClientRequest analiza el mensaje de respuesta, el evento de respuesta se activará tan pronto como se analice el encabezado de respuesta. Al mismo tiempo, se pasa un objeto de respuesta ClientResponse para operar. El mensaje de respuesta posterior se proporciona en una transmisión de solo lectura.
(5) Eventos del cliente HTTP
Respuesta: El cliente correspondiente al evento de solicitud en el servidor activa el evento cuando se responde la solicitud después de emitir la solicitud.
Socket: disparado cuando la conexión establecida en el grupo de conexión subyacente se asigna al objeto de solicitud actual;
Connect: cuando el cliente envía una solicitud de conexión al servidor, si el servidor responde al código de estado 200, el cliente activará el evento.
Actualización: cuando el cliente disfruta de la solicitud de actualización cuando el cliente disfruta del servidor envía una solicitud de actualización, si el servidor responde al estado de protocolos de conmutación 101, el cliente activará el evento.
Continuar: después de que el cliente inicia la esperanza: información de encabezado de 100 continios al servidor, intenta enviar datos más grandes. Si el servidor responde al estado de continuar 100, el servidor activará el evento
Servicios de WebSocket
WebSocket apareció por primera vez como una característica importante de HTML5, y tiene las siguientes ventajas sobre HTTP:
(1) El cliente y el servidor solo establecen la conexión TCP una vez, y se pueden usar menos conexiones
(2) WebSocket Server puede enviar datos al cliente, que es mucho más flexible y eficiente que el modo de respuesta de solicitud HTTP
(3) Encabezado de protocolo más ligero para reducir la transmisión de datos
No hay una biblioteca incorporada en WebSocket en el nodo, pero el módulo WS de la comunidad encapsula la implementación subyacente de WebSocket como el famoso Socket.io