@allgemein/eventbus
Version:
67 lines • 2 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.NsqdWriter = void 0;
const nsqjs = require("nsqjs");
const events_1 = require("events");
const Constants_1 = require("./Constants");
class NsqdWriter extends events_1.EventEmitter {
constructor(host, port, options) {
super();
this.ready = false;
this.host = host;
this.port = port;
this.options = options;
}
isOpened() {
return this.ready;
}
open() {
return new Promise((resolve, reject) => {
try {
this.writer = new nsqjs.Writer(this.host, this.port, this.options);
const binding = (err) => {
reject(err);
};
this.writer.once(Constants_1.ERROR, binding);
this.writer.once(Constants_1.READY, () => {
this.writer.removeListener(Constants_1.ERROR, binding);
resolve(this.writer);
});
this.writer.connect();
this.ready = true;
}
catch (err) {
reject(err);
}
});
}
close() {
this.ready = false;
const self = this;
return new Promise((resolve, reject) => {
self.writer.once(nsqjs.Writer.CLOSED, (err) => {
if (err) {
reject(err);
}
else {
resolve(null);
}
});
this.writer.close();
});
}
publish(message) {
return new Promise((resolve, reject) => {
this.writer.publish(message.topic, message.message, (err) => {
if (err) {
reject(err);
}
else {
resolve(null);
}
});
});
}
}
exports.NsqdWriter = NsqdWriter;
//# sourceMappingURL=NsqdWriter.js.map