Node.js - Módulo de red
Node.js netEl módulo se utiliza para crear servidores y clientes. Este módulo proporciona una envoltura de red asincrónica y se puede importar utilizando la siguiente sintaxis.
var net = require("net")
Métodos
No Señor. | Método y descripción |
---|---|
1 | net.createServer([options][, connectionListener]) Crea un nuevo servidor TCP. El argumento connectionListener se establece automáticamente como un oyente para el evento 'connection'. |
2 | net.connect(options[, connectionListener]) Un método de fábrica, que devuelve un nuevo 'net.Socket' y se conecta a la dirección y al puerto proporcionados. |
3 | net.createConnection(options[, connectionListener]) Un método de fábrica, que devuelve un nuevo 'net.Socket' y se conecta a la dirección y al puerto proporcionados. |
4 | net.connect(port[, host][, connectListener]) Crea una conexión TCP al puerto en el host. Si se omite host, se asumirá 'localhost'. El parámetro connectListener se agregará como un oyente para el evento 'connect'. Es un método de fábrica que devuelve un nuevo 'net.Socket'. |
5 | net.createConnection(port[, host][, connectListener]) Crea una conexión TCP al puerto en el host. Si se omite host, se asumirá 'localhost'. El parámetro connectListener se agregará como un oyente para el evento 'connect'. Es un método de fábrica que devuelve un nuevo 'net.Socket'. |
6 | net.connect(path[, connectListener]) Crea una conexión de socket Unix a la ruta. El parámetro connectListener se agregará como oyente para el evento 'connect'. Es un método de fábrica que devuelve un nuevo 'net.Socket'. |
7 | net.createConnection(path[, connectListener]) Crea una conexión de socket Unix a la ruta. El parámetro connectListener se agregará como oyente para el evento 'connect'. Es un método de fábrica que devuelve un nuevo 'net.Socket'. |
8 | net.isIP(input) Comprueba si la entrada es una dirección IP. Devuelve 0 para cadenas no válidas, 4 para direcciones IP versión 4 y 6 para direcciones IP versión 6. |
9 | net.isIPv4(input) Devuelve verdadero si la entrada es una dirección IP de la versión 4; de lo contrario, devuelve falso. |
10 | net.isIPv6(input) Devuelve verdadero si la entrada es una dirección IP de la versión 6; de lo contrario, devuelve falso. |
Clase - net.Server
Esta clase se utiliza para crear un servidor TCP o local.
Métodos
No Señor. | Método y descripción |
---|---|
1 | server.listen(port[, host][, backlog][, callback]) Comience a aceptar conexiones en el puerto y host especificados. Si se omite el host, el servidor aceptará conexiones dirigidas a cualquier dirección IPv4 (INADDR_ANY). Un valor de puerto de cero asignará un puerto aleatorio. |
2 | server.listen(path[, callback]) Inicie un servidor de socket local que escuche las conexiones en la ruta dada. |
3 | server.listen(handle[, callback]) El objeto handle se puede establecer en un servidor o socket (cualquier cosa con un miembro _handle subyacente), o un objeto {fd: <n>}. Hará que el servidor acepte conexiones en el identificador especificado, pero se presume que el descriptor de archivo o identificador ya se ha vinculado a un puerto o socket de dominio. La escucha en un descriptor de archivo no es compatible con Windows. |
4 | server.listen(options[, callback]) Las propiedades de puerto, host y backlog de las opciones, así como la función de devolución de llamada opcional, se comportan como lo hacen en una llamada a server.listen (puerto, [host], [backlog], [callback]). Alternativamente, la opción de ruta se puede utilizar para especificar un socket UNIX. |
5 | server.close([callback]) Finalmente se cierra cuando se terminan todas las conexiones y el servidor emite un evento de "cierre". |
6 | server.address() Devuelve la dirección vinculada, el nombre de la familia de direcciones y el puerto del servidor según lo informado por el sistema operativo. |
7 | server.unref() Llamar a unref en un servidor permitirá que el programa salga si este es el único servidor activo en el sistema de eventos. Si el servidor ya está sin referencia, volver a llamar a unref no tendrá ningún efecto. |
8 | server.ref() A diferencia de unref, llamar a ref en un servidor previamente no refd no permitirá que el programa salga si es el único servidor que queda (el comportamiento predeterminado). Si el servidor es refd, volver a llamar al ref no tendrá ningún efecto. |
9 | server.getConnections(callback) Obtenga de forma asincrónica el número de conexiones simultáneas en el servidor. Funciona cuando los enchufes se enviaron a las horquillas. La devolución de llamada debe tener dos argumentos, err y contar. |
Eventos
No Señor. | Eventos y descripción |
---|---|
1 | listening Emitido cuando el servidor se ha vinculado después de llamar a server.listen. |
2 | connection Emitido cuando se establece una nueva conexión. Objeto de socket, el objeto de conexión está disponible para el controlador de eventos. Socket es una instancia de net.Socket. |
3 | close Emitido cuando se cierra el servidor. Tenga en cuenta que si existen conexiones, este evento no se emite hasta que finalizan todas las conexiones. |
4 | error Emitido cuando ocurre un error. El evento 'cierre' se llamará directamente después de este evento. |
Clase - net.Socket
Este objeto es una abstracción de un TCP o socket local. Las instancias de net.Socket implementan una interfaz Stream dúplex. Pueden ser creados por el usuario y utilizados como cliente (con connect ()) o pueden ser creados por Node y pasados al usuario a través del evento 'conexión' de un servidor.
Eventos
net.Socket es un eventEmitter y emite los siguientes eventos.
No Señor. | Eventos y descripción |
---|---|
1 | lookup Emitido después de resolver el nombre de host pero antes de conectarse. No aplicable a sockets UNIX. |
2 | connect Se emite cuando se establece correctamente una conexión de socket. |
3 | data Emitido cuando se reciben datos. Los datos del argumento serán un búfer o una cadena. La codificación de datos se establece mediante socket.setEncoding (). |
4 | end Emitido cuando el otro extremo del socket envía un paquete FIN. |
5 | timeout Emitido si el socket agota el tiempo de inactividad. Esto es solo para notificar que el socket ha estado inactivo. El usuario debe cerrar manualmente la conexión. |
6 | drain Se emite cuando el búfer de escritura se vacía. Se puede usar para acelerar las cargas. |
7 | error Emitido cuando ocurre un error. El evento 'cierre' se llamará directamente después de este evento. |
8 | close Emitido una vez que el enchufe está completamente cerrado. El argumento had_error es un booleano que indica si el socket se cerró debido a un error de transmisión. |
Propiedades
net.Socket proporciona muchas propiedades útiles para tener un mejor control sobre las interacciones de los sockets.
No Señor. | Descripción de propiedad |
---|---|
1 | socket.bufferSize Esta propiedad muestra el número de caracteres almacenados actualmente en búfer para escribir. |
2 | socket.remoteAddress Representación de cadena de la dirección IP remota. Por ejemplo, '74 .125.127.100 'o' 2001: 4860: a005 :: 68 '. |
3 | socket.remoteFamily Representación de cadena de la familia de direcciones IP remotas. 'IPv4' o 'IPv6'. |
4 | socket.remotePort La representación numérica del puerto remoto. Por ejemplo, 80 o 21. |
5 | socket.localAddress Representación en cadena de la dirección IP local a la que se conecta el cliente remoto. Por ejemplo, si está escuchando en '0.0.0.0' y el cliente se conecta en '192.168.1.1', el valor sería '192.168.1.1'. |
6 | socket.localPort La representación numérica del puerto local. Por ejemplo, 80 o 21. |
7 | socket.bytesRead La cantidad de bytes recibidos. |
8 | socket.bytesWritten La cantidad de bytes enviados. |
Métodos
No Señor. | Método y descripción |
---|---|
1 | new net.Socket([options]) Construya un nuevo objeto de socket. |
2 | socket.connect(port[, host][, connectListener]) Abre la conexión para un enchufe determinado. Si se dan el puerto y el host, entonces el socket se abrirá como un socket TCP, si se omite el host, se asumirá localhost. Si se proporciona una ruta, el socket se abrirá como un socket Unix a esa ruta. |
3 | socket.connect(path[, connectListener]) Abre la conexión para un enchufe determinado. Si se dan el puerto y el host, entonces el socket se abrirá como un socket TCP, si se omite el host, se asumirá localhost. Si se proporciona una ruta, el socket se abrirá como un socket Unix a esa ruta. |
4 | socket.setEncoding([encoding]) Establezca la codificación para el socket como Readable Stream. |
5 | socket.write(data[, encoding][, callback]) Envía datos en el socket. El segundo parámetro especifica la codificación en el caso de una cadena; el valor predeterminado es la codificación UTF8. |
6 | socket.end([data][, encoding]) Cierra el socket a la mitad, es decir, envía un paquete FIN. Es posible que el servidor aún envíe algunos datos. |
7 | socket.destroy() Garantiza que no se produzca más actividad de E / S en este socket. Necesario solo en caso de errores (error de análisis más o menos). |
8 | socket.pause() Pausa la lectura de datos. Es decir, no se emitirán eventos de 'datos'. Útil para acelerar una carga. |
9 | socket.resume() Reanuda la lectura después de una llamada a pause (). |
10 | socket.setTimeout(timeout[, callback]) Establece el tiempo de espera del socket después de milisegundos de inactividad en el socket. De forma predeterminada, net.Socket no tiene un tiempo de espera. |
11 | socket.setNoDelay([noDelay]) Desactiva el algoritmo de Nagle. De forma predeterminada, las conexiones TCP utilizan el algoritmo de Nagle, almacenan datos en búfer antes de enviarlos. Establecer true para noDelay disparará datos inmediatamente cada vez que se llame a socket.write (). noDelay se establece de forma predeterminada en true. |
12 | socket.setKeepAlive([enable][, initialDelay]) Habilite / deshabilite la funcionalidad Keep-Alive y, opcionalmente, configure el retraso inicial antes de que se envíe la primera sonda keepalive en un socket inactivo. habilitar los valores predeterminados en falso. |
13 | socket.address() Devuelve la dirección vinculada, el nombre de la familia de direcciones y el puerto del socket según lo informado por el sistema operativo. Devuelve un objeto con tres propiedades, por ejemplo, {puerto: 12346, familia: 'IPv4', dirección: '127.0.0.1'}. |
14 | socket.unref() Llamar a unref en un socket permitirá que el programa salga si este es el único socket activo en el sistema de eventos. Si el socket ya está sin referencia, volver a llamar a unref no tendrá ningún efecto. |
15 | socket.ref() A diferencia de unref, llamar a ref en un socket previamente no refd no permitirá que el programa salga si es el único socket que queda (el comportamiento predeterminado). Si el conector es refd, volver a llamar a ref no tendrá ningún efecto. |
Ejemplo
Cree un archivo js llamado server.js con el siguiente código:
Archivo: server.js
var net = require('net');
var server = net.createServer(function(connection) {
console.log('client connected');
connection.on('end', function() {
console.log('client disconnected');
});
connection.write('Hello World!\r\n');
connection.pipe(connection);
});
server.listen(8080, function() {
console.log('server is listening');
});
Ahora ejecute server.js para ver el resultado:
$ node server.js
Verifique la salida.
server is listening
Cree un archivo js llamado client.js con el siguiente código:
File: client.js
var net = require('net');
var client = net.connect({port: 8080}, function() {
console.log('connected to server!');
});
client.on('data', function(data) {
console.log(data.toString());
client.end();
});
client.on('end', function() {
console.log('disconnected from server');
});
Ahora ejecute client.js desde otra terminal para ver el resultado:
$ node client.js
Verifique la salida.
connected to server!
Hello World!
disconnected from server
Verifique la salida en la terminal donde se ejecuta server.js.
server is listening
client connected
client disconnected