Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

2.3K
Vistas
Error de ECONNRESET que bloquea la aplicación NodeJS

Soy un poco nuevo en la codificación y necesitaba ayuda con un error que estoy recibiendo.

Estoy ejecutando una aplicación NodeJS (un bot Discord.js), mi bot tiene la función de registrar la ID de un usuario en una base de datos MySQL cuando el usuario escribe un determinado comando. A veces funciona bien, pero otras veces falla con un error ECONNRESET :

 events.js:292 throw er; // Unhandled 'error' event ^ Error: read ECONNRESET at TCP.onStreamRead (internal/stream_base_commons.js:205:27) Emitted 'error' event on Connection instance at: at Connection._handleProtocolError (C:\Users\Celeron\Desktop\DiscordBot\node_modules\mysql\lib\Connection.js:423:8) at Protocol.emit (events.js:315:20) at Protocol._delegateError (C:\Users\Celeron\Desktop\DiscordBot\node_modules\mysql\lib\protocol\Protocol.js:398:10) at Protocol.handleNetworkError (C:\Users\Celeron\Desktop\DiscordBot\node_modules\mysql\lib\protocol\Protocol.js:371:10) at Connection._handleNetworkError (C:\Users\Celeron\Desktop\DiscordBot\node_modules\mysql\lib\Connection.js:418:18) at Socket.emit (events.js:315:20) at emitErrorNT (internal/streams/destroy.js:92:8) at emitErrorAndCloseNT (internal/streams/destroy.js:60:3) at processTicksAndRejections (internal/process/task_queues.js:84:21) { errno: 'ECONNRESET', code: 'ECONNRESET', syscall: 'read', fatal: true }
over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

En primer lugar, debe catch el error, para que su aplicación pueda manejarlo correctamente y no se bloquee cuando la conexión mysql se cierra por alguna extraña razón. Pruebe con connection.on('error', ...) o con bloques try-catch .

Para mantener una conexión abierta, debe volver a conectarse al cerrar. O simplemente use la conexión de agrupación de mysql, que maneja muy bien la reconexión automática, con un solo cambio de código.

PD: La agrupación de varias conexiones suele ser una buena idea para las aplicaciones asíncronas, como los servidores, pero es seguro mantener una única conexión a través de la agrupación ( connectionLimit : 1 ) solo para la reconexión automática.

PPS: el tiempo de espera de inactividad de Mysql se puede configurar en my.cnf del servidor

over 4 years ago · Santiago Trujillo Denunciar

0

Solucioné el problema. El bloqueo ocurrió debido a la inactividad de la aplicación en la base de datos, y cuando se produjo la estafa. se vuelve inactivo durante un par de segundos, el servidor mysql cierra la conexión y hace que el bot se bloquee cuando el código requiere algún recurso de la base de datos.

La solución fue crear una función para mantener una actividad constante en la conexión DB.

Aquí está el código:

 con.query('SELECT 1', (err) => { if (err) throw err console.log('Tum tum') \\ Heartbeat noises to know if it worked xD }) } setInterval(keepAlive, 15000)```
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda