import got from 'got'; import rfidParser from './rfidParser.js'; import newPallet from './newPallet.js'; import debug from '../util/debugStream.js'; import counter from './counter.js'; let interval; let counterInterval; export default async(conf, cb) => { let rfidbuffer = new Set(); let rfidbufferExtend = []; const stream = got.stream(`http://${conf.ip}/api/v1/data/stream`); stream .on('data', async value => { const parsed = await rfidParser(value); console.log(parsed.codes); if (!parsed.codes.size) return; rfidbuffer = new Set([...rfidbuffer, ...parsed.codes]); rfidbufferExtend = rfidbufferExtend.concat(parsed.extended); debug({codes: rfidbuffer, extended: rfidbufferExtend}, conf); if (rfidbuffer.size) { clearTimeout(interval); interval = null; interval = setTimeout(createPallet, conf.interval); if (!counterInterval) counterInterval = setTimeout(counterIntervalManager, conf.counterInterval); } }) .on('error', e => { cb(e); }); function createPallet() { clearTimeout(interval); // try remove newPallet(rfidbuffer, conf.arcId); rfidbuffer = new Set(); rfidbufferExtend = []; } function counterIntervalManager() { counterInterval = null; counter(rfidbuffer.size, conf.arcId); } };