Qué significa Socket Hang Up y cómo solucionarlo
Referencia del error
Socket Hang Up
Lenguaje
Severidad
AltaCuándo ocurre
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.
Posibles soluciones
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.
Errores relacionados
Más detalles
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.
Posibles soluciones
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.
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ó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);
});Practica en inglés
¿Cómo le explicarías un Socket Hang Up a un compañero dev? Elige la frase correcta:
"I hit an error...
¿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