30 lines
745 B
JavaScript
30 lines
745 B
JavaScript
|
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;
|