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

135
Visualizações
Implementar JavaScript Buffer para almacenar datos

Recibo estas cadenas enormes a través de WebSocket:

 [ "BTC-31DEC21-100000-P", "{\"data\":{\"bids\":{\"0.01\":{\"price\":0.01,\"volume\":66.2,\"exchange\":\"DER\"},\"5.0E-4\":{\"price\":5.0E-4,\"volume\":1.1,\"exchange\":\"DER\"},\"0.637\":{\"price\":0.637,\"volume\":8.4,\"exchange\":\"DER\"}},\"asks\":{\"0.664\":{\"price\":0.664,\"volume\":8.4,\"exchange\":\"DER\"}}},\"isMasterFrame\":true}" ]

o

 [ "BTC-31DEC21-36000-C", "{\"data\":[{\"price\":0.422,\"volume\":8.4,\"exchange\":\"DER\",\"side\":\"ASKS\"},{\"price\":0.423,\"volume\":0.0,\"exchange\":\"DER\",\"side\":\"ASKS\"}],\"isMasterFrame\":false}" ]

o

 [ "BTC-31DEC21-60000-P", "{\"data\":[{\"price\":0.105,\"volume\":0.0,\"exchange\":\"DER\",\"side\":\"ASKS\"},{\"price\":0.1055,\"volume\":28.7,\"exchange\":\"DER\",\"side\":\"ASKS\"},{\"price\":0.106,\"volume\":7.6,\"exchange\":\"DER\",\"side\":\"ASKS\"},{\"price\":0.1065,\"volume\":43.0,\"exchange\":\"DER\",\"side\":\"ASKS\"}],\"isMasterFrame\":false}" ]

Quiero crear un búfer de JavaScript donde pueda almacenar los datos y restablecerlos si recibo JSON con isMasterFrame = true

 let payload = JSON.parse(messageString[1]); if (payload.hasOwnProperty("isMasterFrame")) { for (let i = 0; i < payload.pairs.length; i++) { let currentPair = payload.data[i] currentPair = currentPair.replace(/\0/g, ''); //Remove null chars if (currentPair.toUpperCase() != 'KILL') { // reset the buffer and start again to fill data } } } else { // if we receive "isMasterFrame":false just update the data without reset }

¿Cuáles son las opciones disponibles para implementar este búfer?

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Creo que esto es lo que buscas. Almacena en caché los detalles hasta que encuentra isMasterFrame: true && KILL , momento en el cual borra el caché y comienza de nuevo.

EDITAR: datos almacenados usando una cadena de estilo BTC como clave y datos como valor para habilitar la consulta de caché.

 let messageCache = {}; const messages = [ ["BTC-31DEC21-36000-C", "{\"data\":[{\"price\":0.422,\"volume\":8.4,\"exchange\":\"DER\",\"side\":\"ASKS\"},{\"price\":0.423,\"volume\":0.0,\"exchange\":\"DER\",\"side\":\"ASKS\"}],\"isMasterFrame\":false}"], ["BTC-31DEC21-36000-D", "{\"data\":[{\"price\":0.422,\"volume\":8.4,\"exchange\":\"DER\",\"side\":\"ASKS\"},{\"price\":0.423,\"volume\":0.0,\"exchange\":\"DER\",\"side\":\"ASKS\"}],\"isMasterFrame\":false}"], ["BTC-31DEC21-60000-P", "{\"data\":[{\"price\":0.105,\"volume\":0.0,\"exchange\":\"DER\",\"side\":\"ASKS\"},{\"price\":0.1055,\"volume\":28.7,\"exchange\":\"DER\",\"side\":\"ASKS\"},{\"price\":0.106,\"volume\":7.6,\"exchange\":\"DER\",\"side\":\"ASKS\"},{\"price\":0.1065,\"volume\":43.0,\"exchange\":\"DER\",\"side\":\"KILL\"}],\"isMasterFrame\"\:true}"], ["BTC-31DEC21-60000-Q", "{\"data\":[{\"price\":0.105,\"volume\":0.0,\"exchange\":\"DER\",\"side\":\"ASKS\"},{\"price\":0.1055,\"volume\":28.7,\"exchange\":\"DER\",\"side\":\"ASKS\"},{\"price\":0.106,\"volume\":7.6,\"exchange\":\"DER\",\"side\":\"ASKS\"},{\"price\":0.1065,\"volume\":43.0,\"exchange\":\"DER\",\"side\":\"ASKS\"}],\"isMasterFrame\"\:false}"] ]; function processData(key, payload) { if (!payload.isMasterFrame) { messageCache[key] = payload; return; } for (let obj of payload.data) { Object.values(obj).forEach(item => { item = item.toString().replace(/\0/g, ''); //Remove null chars if (item.toUpperCase() !== 'KILL') { messageCache = {}; // Clear the cache/buffer } }); } } function queryCache(key){ return messageCache[key]; } messages.forEach(message => { const payload = JSON.parse(message[1]); processData(message[0], payload); console.log("Number of cached messages: " + Object.keys(messageCache).length); }); console.log('Query Cache [BTC-31DEC21-60000-Q]:'); let result = queryCache('BTC-31DEC21-60000-Q'); console.log(result);

about 4 years ago · Juan Pablo Isaza Relatório
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