Lingua-e
← Errores
JavaScript

Qué significa Socket Hang Up y cómo solucionarlo

Referencia del error

Socket Hang Up

Lenguaje

JavaScript

Severidad

Alta

Cuá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.

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

JavaScript

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 response

Error 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