Propiedad de Node.js request.socket

La propiedad request.socket ( agregada en v0.3.0) es una propiedad incorporada del módulo ‘ http ‘ que hace referencia al socket subyacente y la mayoría de los usuarios no tienen acceso a esta propiedad. En particular, el socket no emite eventos ‘ legibles ‘, pero se puede acceder al socket a través de request.connection . Esta propiedad garantiza ser una instancia de la clase < net.Socket >, una subclase de <stream.Duplex>.

Para obtener una respuesta y un resultado adecuado, necesitamos importar el módulo ‘ http ‘.

const http = require('http'); 

Sintaxis:

request.socket

Parámetros: Esta propiedad no acepta ningún parámetro.

Valor devuelto: Devuelve los datos solicitados en forma de un objeto que contiene una gran cantidad de datos relacionados con el socket.

  • < stream.Duplex >: < stream.Duplex > o flujo dúplex es un flujo que implementa tanto lectura como escritura.

Los siguientes ejemplos ilustran el uso de la propiedad request.socket en Node.js.

Ejemplo 1:  Nombre de archivo: index.js

// Node.js program to demonstrate the 
// req.socket property 
  
// Using require to access http module 
const http = require('http');
  
// Requesting from google server
const req = http.get({ host: 'www.geeksforgeeks.org' });
  
// Ending the request
req.end();
  
req.once('response', (res) => {
  
    // Printing socket after getting response
    console.log(req.socket);
  
    // Printing address and port after
    // getting response
    console.log(`IP address of geeksforgeeks is 
            ${req.socket.localAddress}.`);
              
    console.log(`Its Port is ${req.socket.localPort}.`);
});

Producción:

>> <ref *1> Socket{ conectando: falso,

    _hadError: falso,

    _padre: nulo,

    _host: ‘www.geeeksforgeeks.org’… [Símbolo(kBytesEscritos)]: 0 }

>> La dirección IP es 192.168.43.207

>> Su puerto es 56933.

Ejemplo 2:  Nombre de archivo: index.js

// Node.js program to demonstrate the 
// req.socket property 
  
// Using require to access http module 
const { get } = require('http');
  
// Setting host server url
const options = { host: 'www.geeksforgeeks.org' };
  
// Requesting from geeksforgeeks server
const req = get(options);
req.end();
  
req.once('response', (res) => {
  
    // Printing the requestrelated data
    console.log("Status:", res.statusCode, 
                        res.statusMessage);
  
    console.log("Host:", req.socket._host);
  
    console.log("Method:", 
        req.socket.parser.outgoing.method);
  
    console.log("Parser Header:", 
            req.socket.parser.outgoing._header);
  
    console.log("Writable:", req.socket.writable);
    console.log("Readable:", req.socket.readable);
      
    console.log("Http Header:", 
            req.socket._httpMessage._header);
  
    if (req.socket._httpMessage._header === 
            req.socket.parser.outgoing._header) {
        console.log("Both headers are exactly same...")
    } else {
        console.log("Headers are not same...")
    }
  
    // Printing address and port after
    // getting response
    console.log(`IP address of geeksforgeeks is 
        ${req.socket.localAddress}.`);
  
    console.log(`Its port is ${req.socket.localPort}.`);
});

Ejecute el archivo index.js con el siguiente comando:

node index.js

Producción:

>> Estado: 301 Movido permanentemente

>> Anfitrión: www.geeksforgeeks.org

>> Método: OBTENER

>> Encabezado del analizador: GET / HTTP/1.1

    Anfitrión: www.geeksforgeeks.org

    Conexión: cerrar

>> Escribible: verdadero

>> Legible: verdadero

>> Encabezado HTTP: GET / HTTP/1.1

    Anfitrión: www.geeksforgeeks.org

    Conexión: cerrar

>> Ambos encabezados son exactamente iguales…

>> La dirección IP es 192.168.43.207

>> Su puerto es 57425.

Referencia: https://nodejs.org/api/http.html#http_request_socket

Publicación traducida automáticamente

Artículo escrito por amitkumarjee y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *