kannon-client/classes/EventParser.js

30 lines
745 B
JavaScript
Raw Normal View History

2022-04-14 14:25:48 +02:00
const { EVENT_DELIMITER } = require('../libs/constants.js');
const EventEmitter = require('events');
class EventParser extends EventEmitter {
constructor() {
super();
this.buffer = '';
}
parse(data) {
if (data === undefined) {
return;
}
this.buffer += data;
const indexOfEnd = this.buffer.indexOf(EVENT_DELIMITER);
if (indexOfEnd === -1) {
return;
}
const event = JSON.parse(this.buffer.substring(0, indexOfEnd));
this.buffer = '';
if (event.id === undefined) {
return;
}
const eventId = event.id.toLowerCase();
this.emit(eventId, event.data);
}
}
module.exports = EventParser;