This repository has been archived on 2023-11-14. You can view files and clone it, but cannot push or open issues/pull-requests.
valnet/src/lib/StreamJsonParser.js

26 lines
574 B
JavaScript

const { EventEmitter } = require('events');
module.exports.StreamJsonParser = class StreamJsonParser extends EventEmitter {
buffer = '';
data(evt) {
// toString it, in case its a buffer!
this.buffer += evt.toString();
this.processBuffer();
}
processBuffer() {
const parts = this.buffer.split(/(\x02[^\x02\x03]*\x03)/g);
this.buffer = '';
for(const message of parts) {
if(message.endsWith('\x03')) {
const obj = JSON.parse(message.substr(1, message.length - 2));
this.emit('message', obj);
} else {
this.buffer += message;
}
}
}
}