El error 'socket hang up' ocurre en Node.js cuando el servidor cierra una conexión HTTP antes de que se reciba una respuesta completa. Está estrechamente relacionado con ECONNRESET y típicamente significa que el servidor cerró el socket prematuramente.
Por qué ocurre
- •El servidor cierra la conexión antes de terminar el cuerpo de la respuesta.
- •Un proxy inverso (nginx, balanceador de carga) se agota y termina la conexión.
- •El servidor se bloquea mientras procesa la solicitud.
- •No vaciar el cuerpo de la solicitud en el lado del servidor hace que el cliente se agote.
Ejemplos
Código que causa el error
const http = require("http");
const req = http.get("http://example.com/api", (res) => {
res.resume();
});
req.end();
// Server closes connection before sending full responseError en la terminal
Error: socket hang up
code: 'ECONNRESET'Cómo solucionarlo
Siempre adjunta un manejador de evento 'error' a las solicitudes HTTP de Node.js. Implementa lógica de reintento para solicitudes idempotentes. Verifica los logs del servidor para determinar por qué se cierra la conexión anticipadamente. Aumenta la configuración de timeout del proxy si el servidor necesita más tiempo de procesamiento.
Código corregido
const http = require("http");
const req = http.get("http://example.com/api", (res) => {
let body = "";
res.on("data", (chunk) => { body += chunk; });
res.on("end", () => console.log(body));
});
req.on("error", (err) => {
console.error("Request failed:", err.message);
});Errores relacionados
¿Listo para practicar tu inglés en el trabajo?
Lingua-e tiene ejercicios interactivos basados en conversaciones reales de developers: standups, code reviews, retrospectivas y más. Practica hasta que salga solo.
Prueba Lingua-e gratis