vn-rfid/src/stream.js

53 lines
1.4 KiB
JavaScript

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);
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);
newPallet(rfidbuffer, conf.arcId);
rfidbuffer = new Set();
rfidbufferExtend = [];
}
function counterIntervalManager() {
counterInterval = null;
counter(rfidbuffer.size, conf.arcId);
}
};