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

1.9K
Vistas
Error: lea ECONNRESET en TLSWrap.onStreamRead al cerrar el navegador/pestañas

estoy escribiendo mi primera aplicación de chat en nodejs, mi aplicación básicamente realiza un seguimiento de los usuarios en línea y los pone en las salas para chatear a través de webrtc... estoy usando pm2 para ejecutar el servidor de chat

así que noté que a veces, cuando cierro las pestañas del navegador, mi aplicación se bloquea y pm2 vuelve a cargar el servidor, así que revisé el registro y vi este error

 0|chat | Error: read ECONNRESET 0|chat | at TLSWrap.onStreamRead (node:internal/stream_base_commons:220:20) { 0|chat | errno: -104, 0|chat | code: 'ECONNRESET', 0|chat | syscall: 'read' 0|chat | }

aquí está el error cuando se ejecuta sin pm2

 node:events:368 throw er; // Unhandled 'error' event ^ Error: read ECONNRESET at TLSWrap.onStreamRead (node:internal/stream_base_commons:220:20) Emitted 'error' event on TLSSocket instance at: at emitErrorNT (node:internal/streams/destroy:157:8) at emitErrorCloseNT (node:internal/streams/destroy:122:3) at processTicksAndRejections (node:internal/process/task_queues:83:21) { errno: -104, code: 'ECONNRESET', syscall: 'read' }

para asegurarme de que no es mi código el que causa este error, eliminé todos los códigos en mi aplicación y solo puse 2 funciones simples para escuchar eventos en línea (llamados por el cliente en línea a través de socket.io) y desconectar (llamados automáticamente por la desconexión del usuario). Y efectivamente, después de cerrar y abrir algunas pestañas, vuelve a suceder. Aquí hay una versión simplificada de mi código.

estoy usando Express.io que es una combinación de Express y Socket.io

 const env = require('dotenv').config({ path: '.env' }) const https = require('https'); const fs = require('fs'); app = require('express.io')(); var options = { key: fs.readFileSync( env.parsed.SSL_KEY), cert: fs.readFileSync(env.parsed.SSL_CERT) }; app.https(options).io(); console.log('|-> protocol : https '); app.io.route('online' , function (req){ console.log(`| online socket -> ${req.socket.id}`); }) app.io.route('disconnect', function(req) { console.log(`|->****************** disconnect : ${req.socket.id}`); }); var PORT = env.parsed.PORT || 8080 console.log(`|-> listining to port ${PORT} `); app.listen(PORT );

He buscado en línea y sé por qué está sucediendo (creo) pero no tengo ninguna comunicación de datos en este código... No tengo idea de cómo manejar esto y agradezco cualquier ayuda.

aquí está el registro completo, puede ver que sucede después de cerrar algunas pestañas

ingrese la descripción de la imagen aquí

 /root/.pm2/logs/chat-out.log last 15 lines: 0|chat | |-> protocol : https 0|chat | |-> listining to port 8080 /root/.pm2/logs/chat-error.log last 15 lines: 0|chat | (node:19821) [DEP0066] DeprecationWarning: OutgoingMessage.prototype._headers is deprecated 0|chat | (Use `node --trace-deprecation ...` to show where the warning was created) 0|chat | | online socket -> Z2z7m6D9OXKPGRVhbz4R 0|chat | |->****************** disconnect : H_1-d7sIm2oIvxzzbz4Q 0|chat | | online socket -> JrnLWbqN4luBtYg4bz4S 0|chat | | online socket -> ZSY1wIywMEdmUcALbz4T 0|chat | | online socket -> ugSg08DksJ73ld1Rbz4U 0|chat | |->****************** disconnect : ugSg08DksJ73ld1Rbz4U 0|chat | |->****************** disconnect : ZSY1wIywMEdmUcALbz4T 0|chat | Error: read ECONNRESET 0|chat | at TLSWrap.onStreamRead (node:internal/stream_base_commons:220:20) { 0|chat | errno: -104, 0|chat | code: 'ECONNRESET', 0|chat | syscall: 'read' 0|chat | } PM2 | App [chat:0] exited with code [1] via signal [SIGINT] PM2 | App [chat:0] starting in -fork mode- PM2 | App [chat:0] online 0|chat | |-> protocol : https 0|chat | |-> listining to port 8080 0|chat | (node:19864) [DEP0066] DeprecationWarning: OutgoingMessage.prototype._headers is deprecated 0|chat | (Use `node --trace-deprecation ...` to show where the warning was created)
over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Es difícil resolver el problema sin ver el código del cliente, pero mi apuesta es declarar esta ruta

 app.io.route('disconnect', function(req) { console.log(`|->****************** disconnect : ${req.socket.id}`); });

está haciendo un mal uso de la biblioteca express.io :

https://github.com/techpines/express.io/tree/master/lib#reserved-events

Estos eventos están reservados y no deben usarse con app.io.route o req.io.on a menos que sepa lo que está haciendo.

  • conectar
  • conectando
  • desconectar
  • Conexión fallida
  • error
  • mensaje
  • reconexión_fallida
  • reconectar
  • reconectando

Por cierto, como dijo otro comentario, esta biblioteca es antigua y no debes usarla. Utiliza Socket.IO v0.9 y la versión actual es v4.

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