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

182
Vistas
¿Coroutine que verifica regularmente una cola heapify para enviar mensajes?

Objetivo: una cola de prioridad de heapify que se sondea regularmente para enviar objetos de mensaje. Cada vez que se sondea la cola, debe echar un vistazo a la cola para ver si hay algún mensaje. Si es así, debería intentar enviar el mensaje.

En caso de éxito, elimine ese mensaje de la cola.

Me preocupan los mensajes perdidos, por lo que si el mensaje falla, debe permanecer en la cola para enviarse en la siguiente invocación. Y el usuario deberá ser alertado (pero yo mismo me encargaré de esa parte).

Lo que tengo hasta ahora:

 import { Heap } from 'heap-js'; function coroutine(f) { var o = f(); // instantiate the coroutine o.next(); // execute until the first yield return function(x) { o.next(x); }; } socket.messageQueue = new Heap(100); var messageBox = coroutine(async function*() { while (true) { yield; if (typeof socket.messageQueue.peek() === 'undefined') { continue; } let message = socket.messageQueue.peek(); let response = await sendMessage(socket, message); if (response.success) { socket.messageQueue.pop(); // the message was sent // reset warnings if they exist } else { // warn user that the message send failed // it will retry in 3 seconds } } }); socket.messageBox = setInterval(messageBox, 3000);

Y los mensajes se agregan a la cola así:

 let priority = // the largest priority + 1 socket.messageQueue.push(message, priority);

El socket es de socket.io. Estoy instanciando el proceso en un socket del lado del servidor porque lo voy a derribar cuando el usuario se desconecte. Y la cola es FIFO, por lo que la prioridad debe establecerse en la última prioridad. Desafortunadamente, no parece que heapify tenga un método incorporado para obtener la mayor prioridad de un montón.

Cualquier sugerencia para hacer esto eficiente y elocuente sería apreciada.

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