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

96
Vistas
`await` bloquea la capacidad de node.js para recibir y procesar la comunicación websocket

Tengo un script de node que genera un número aleatorio de conexiones websocket.

En ese mismo script, await una llamada a mi servidor para hacer ping a los websockets para contar la cantidad de respuestas dentro de un tiempo de espera.

El problema es que la await bloquea la capacidad de respuesta del websocket y solo SÍ responde después de que se resuelve la await (después de un tiempo de espera).

¿Cómo puedo generar websockets, esperar una solicitud y NO bloquear los websockets en el mismo script?

 const axios = require('axios'); const { io } = require('socket.io-client'); const sock = async ({_id}) => { let socket = await io("ws://localhost:54321") socket.on('connect',(args) => { console.log(`${_id} connected to ws.`); }) socket.on('ping',args => { console.log("PING RECEIVED ("+_id+")") socket.emit('pong',{socketId:_id,...args}) }) return socket; } (async function go(){ let g_sockets = []; await Promise.all(['so0','s01'].map(async _id => { let s = await sock({_id}) g_sockets.push(s); })) await new Promise((res,rej) => { axios.get('http://localhost:54321/roomSize').then(r => { console.log(r.data); res(r.data) }) }) })()

Aquí, socket.on('ping',function) solo se activa DESPUÉS de que se resuelva la solicitud HTTP /roomSize , lo que significa que el cálculo /roomSize es incorrecto.

La ruta de mi servidor Flask se ve así:

 ping_holder = {} @app.route('/roomSize') def getRoomSize(): pingId = str(random.randint(0,1e6)) ping_holder[ pingId ] = [] data = { "pingId":pingId } socketio.emit('ping',data=data,broadcast=True) time.sleep(1) return jsonify(ping_holder[pingId])
about 4 years ago · Juan Pablo Isaza
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