node-red-contrib-vban
Version:
Nodes to interact with vban protocol
40 lines (39 loc) • 1.38 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.Receiver = void 0;
const Security_1 = require("./Security");
const events_1 = require("events");
class Receiver extends events_1.EventEmitter {
constructor(server, opts = {}) {
super();
this.server = server;
this.messageHandler = (packet, sender) => {
try {
if (this.subProtocolFilter && !this.subProtocolFilter.includes(packet.subProtocol)) {
return;
}
if (this.security && !this.security.check(sender.address)) {
return;
}
if (this.streamName && this.streamName != packet.streamName) {
return;
}
this.emit('message', packet, sender);
}
catch (e) {
this.emit('error', e);
}
};
if (opts.allowedIps) {
this.security = new Security_1.Security(opts.allowedIps);
}
if (opts.subProtocol) {
this.subProtocolFilter = Array.isArray(opts.subProtocol) ? opts.subProtocol : [opts.subProtocol];
}
if (opts.streamName) {
this.streamName = opts.streamName;
}
this.server.on('message', this.messageHandler);
}
}
exports.Receiver = Receiver;