Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

185
Visualizações
¿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 à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda