Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

117
Views
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
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!