Tengo un detector de eventos que escucha los mensajes nuevos y quiero enviar todos los mensajes nuevos a una matriz, pero cuando compruebo el resultado, veo que solo se envían las cadenas .
Este es mi código:
async function consume() { try { let result = []; const connection = await amqps.connect(URL); const channel = await connection.createChannel(); await channel.consume("messages", function (message) { result.push(JSON.parse(message.content.toString())); }); return result; } catch (error) { console.log(error); } }Cuando llamo al método de consumo y verifico el resultado, esto es lo que devuelve:
[ 'yoyo', 'yoyo', 'yoyo', 'yoyo', 'yoyo', 'yoyo', '', 'hi you', 'hi you', 'hi you', 'hi you', 'hi you', 'hi you', 'hi you' ] Sin embargo, cuando registro JSON.parse(message.content.toString()) desde dentro de la función de escucha, puedo ver los objetos:
... hi you hi you hi you { read: false, timeSent: 1645945954348, message: 'Hchxh', userID: 41, contactID: 46 } { read: false, timeSent: 1645945990969, message: 'Gry', userID: 41, contactID: 46 } ... Este es el resultado al registrar message.content.toString() (sin analizar) desde el oyente:
"hi you" "hi you" "hi you" {"read":false,"timeSent":1645945954348,"message":"Hchxh","userID":41,"contactID":46} {"read":false,"timeSent":1645945990969,"message":"Gry","userID":41,"contactID":46} {"read":false,"timeSent":1645946032914,"message":"Ti","userID":41,"contactID":46} {"read":false,"timeSent":1645946119720,"message":"Ge","userID":41,"contactID":46} {"read":false,"timeSent":1645946454158,"message":"Beuh","userID":41,"contactID":46} {"read":false,"timeSent":1645948170050,"message":"Xhxh","userID":41,"contactID":46}¿Alguna idea de lo que estoy haciendo mal?
Pruebe esta sintaxis:
async function consume() { try { const connection = await amqps.connect(URL); const channel = await connection.createChannel(); const result = await channel.consume('messages'); return result.content.toString(); } catch (error) { console.log(error); } }Puede analizarlo si lo desea, aunque no estoy seguro de por qué necesitaría hacerlo.