Tengo una pregunta general sobre la respuesta de Node Js, y esperaba que alguien pudiera explicar lo que realmente está sucediendo cuando lo haga, digamos res.WriteHead ("bla, bla").
Entonces, por lo que entiendo en mi html y javascript, hago una solicitud de ruta. Compruebo la solicitud de la ruta y digamos que es un método de obtención. Escribo head que escribirá el encabezado de una respuesta http. ¿Qué pasará si envío res.write("algún texto");.
Lo que pregunto es si puede explicar el proceso y lo que realmente sucede con la comunicación entre el cliente y el servidor.
Estoy un poco confundido sobre la respuesta si este mensaje se envía de vuelta o es como una transmisión.
Las respuestas con tanta explicación sobre todo el proceso serían muy apreciadas.
Algún código de muestra de lo que estoy hablando. Tenga en cuenta que estoy usando NodeJS
// carga el módulo http var http = require('http');
//crear el servidor var server = http.createServer(handleRequest);
//iniciar el servidor server.listen(2000);
//función de controlador de solicitudes function handleRequest(req, res) {
console.log(req.method+" request for "+req.url); // content header res.writeHead(200, {'content-type': 'text/plain'}); res.write("ohai!\n"); // write message body and send res.end("Hello, World!"); };Para explicar esto, podemos considerar una analogía en la que una respuesta podría considerarse como un documento que tiene las siguientes entidades: línea de estado, (encabezado de respuesta) [cuerpo del mensaje]
Entonces, por res.writeHead(200, {'content-type': 'text/plain'}); el servidor está escribiendo la línea de estado del documento de respuesta junto con el encabezado de respuesta 'tipo de contenido': 'texto/sin formato'
Por res.write("ohai!\n"); el servidor ha comenzado a escribir el contenido del cuerpo del mensaje que se considerará completo por res.end ("¡Hola, mundo!"); hasta entonces, el cliente estará en estado estancado esperando que el servidor proporcione una respuesta a la solicitud
Concluyendo arriba que el código del lado del servidor podría haber solo un res.writeHead y res.end pero se podrían usar múltiples res.write que se agregarán al cuerpo del mensaje.
Después de que res.end se ejecuta en el servidor, el servidor envía la respuesta en fragmentos utilizando el mecanismo de transferencia de fragmentos HTTP donde cada fragmento está precedido por su tamaño. La transmisión finaliza cuando se encuentra un fragmento de longitud cero.
Adjunto ciclo de vida de solicitud-respuesta
app.get('/check', function (req, res) { res.writeHead(200, {'content-type': 'text/plain'}); res.write("ohai!\n"); res.write("I am!\n"); res.write("good!\n"); res.end("Hello, World!"); })esto resultó en la siguiente respuesta
ohai! I am! good! Hello, World!