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

123
Vistas
eventemitter.on se registra y activa varias veces cuando se usa con sockets.io

Quiero llamar a un evento io.emit('eventname') de socket.io, cuando se activa un evento personalizado en otro archivo en node.js. esto sucede en respuesta a una solicitud HTTP para una aplicación frontend

además, he creado un emisor de eventos común ya que la simple importación y exportación de eventos no se activaba, como se esperaba, entre archivos en node.js

commonEventEmitter.js

 var events = require('events') var em = new events.EventEmitter() module.exports.commonEmitter = em;

Este archivo recibe la solicitud HTTP y activa un evento, es decir, 'newSOS, registrado en el archivo socket.js

sosRequest.js

 const common = require('../utils/commonEventEmitter') const commonEvent = common.commonEmitter exports.createSOS = asyncHandler( async (req,res,next) => { const { type , location } = req.body Request = await SOS.findOne({type : type , createdBy: req.commuter[0].id , status:'Pending'}) commonEvent.emit('newSOS') const request = await SOS.create({ type, location, createdBy, }) res.status(200).json({ success:true, request })

En este archivo, se registra el evento 'newSOS' y se llama muchas veces a medida que se recibe una solicitud HTTP.

socket.js

 const io = require('socket.io')() // const eventHandlers = require('./eventHandlers'); const common = require('../utils/commonEventEmitter') const commonEvent = common.commonEmitter io.on('connection' , (socket)=>{ commonEvent.on('newSOS' , ()=> { console.log('running only once'.bgGreen) io.emit('sos_admin' , "just do it") }) } module.exports = io

Se ejecuta varias veces en 1 página. El patrón de la siguiente manera:

Si la página se carga por primera vez, se ejecutará una vez. Si la página se carga por segunda vez, se ejecutará dos veces. Si la página se carga n veces, se ejecutará n veces.

y por favor también dígame si mi io.on('conexión') está siendo llamado varias veces.

about 4 years ago · Santiago Gelvez
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