sdg-admin
Version:
pomelo sdg admin plugin
84 lines • 7.25 kB
JavaScript
"use strict";
/**
* MonitorAgent会主动发起连接到master,并维护对应的连接,然后通过此连接与master端通信
*/
Object.defineProperty(exports, "__esModule", { value: true });
exports.MonitorAgent = void 0;
const tslib_1 = require("tslib");
const events_1 = require("events");
const socket_io_client_1 = tslib_1.__importDefault(require("socket.io-client"));
const __1 = require("..");
const constants_1 = require("../util/constants");
class MonitorAgent extends events_1.EventEmitter {
constructor(consoleService, opts) {
super();
this.consoleService = consoleService;
this.status = __1.EStatus.INIT;
this.id = opts.serverInfo.id;
this.type = opts.serverInfo.type;
this.host = opts.host;
this.port = opts.port;
this.serverInfo = opts.serverInfo;
this.timeout = opts.timeout || constants_1.DEFAULT_PARAM.TIMEOUT;
}
start() {
console.log('monitor start');
this.connect();
}
connect() {
const uri = `${this.host}:${this.port}`;
this.socket = socket_io_client_1.default(uri);
this.socket.on('connect', () => {
console.log('[MonitorAgent] connect to server');
if (this.status === __1.EStatus.CONNECTED || this.status === __1.EStatus.REGISTERED)
return;
this.status = __1.EStatus.CONNECTED;
this.register().then();
});
this.socket.on('error', (err) => {
if (this.status > __1.EStatus.CONNECTED) {
this.emit('error', err);
}
});
this.socket.on('disconnect', (reason) => {
this.status = __1.EStatus.CLOSED;
this.emit('close');
});
// 来自master的监控请求
this.socket.on(__1.ESocketEvent.MONITOR, async (msg, cb) => {
try {
const res = await this.consoleService.execute(msg.moduleId, 'monitorHandler', msg.body);
cb && cb(null, res);
}
catch (e) {
cb && cb(e);
}
});
}
/**
* 注册,鉴权
*/
async register() {
let req = Object.assign(Object.assign({}, this.serverInfo), { moduleType: __1.EModuleType.MONITOR, token: await this.consoleService.authServer(this.type) });
this.socket.emit(__1.ESocketEvent.REGISTER, req, err => {
if (err)
return console.error('AUTH ERROR');
this.status = __1.EStatus.REGISTERED;
this.emit(__1.ESocketEvent.REGISTER, this.serverInfo);
});
}
doSend(msg) {
msg.serverId = this.id;
if (this.status !== __1.EStatus.REGISTERED)
return console.error('has not registered');
return new Promise((resolve, reject) => {
const to = setTimeout(() => reject(`request time out for ${this.timeout}`), this.timeout);
this.socket.emit(__1.ESocketEvent.MONITOR, msg, (err, res) => {
clearTimeout(to);
err ? reject(err) : resolve(res);
});
});
}
}
exports.MonitorAgent = MonitorAgent;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9uaXRvckFnZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL21vbml0b3IvbW9uaXRvckFnZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7R0FFRzs7OztBQUVILG1DQUFzQztBQUN0QyxnRkFBK0M7QUFFL0MsMEJBQW9HO0FBQ3BHLGlEQUFrRDtBQUdsRCxNQUFhLFlBQWEsU0FBUSxxQkFBWTtJQVU1QyxZQUFtQixjQUE4QixFQUFFLElBQXVCO1FBQ3hFLEtBQUssRUFBRSxDQUFDO1FBRFMsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBRjFDLFdBQU0sR0FBWSxXQUFPLENBQUMsSUFBSSxDQUFDO1FBSXBDLElBQUksQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7UUFDN0IsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQztRQUNqQyxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7UUFDdEIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQztRQUNsQyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLElBQUkseUJBQWEsQ0FBQyxPQUFPLENBQUM7SUFDdkQsQ0FBQztJQUVNLEtBQUs7UUFDVixPQUFPLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQzdCLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUNqQixDQUFDO0lBRU0sT0FBTztRQUNaLE1BQU0sR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDeEMsSUFBSSxDQUFDLE1BQU0sR0FBRywwQkFBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLFNBQVMsRUFBRSxHQUFHLEVBQUU7WUFDN0IsT0FBTyxDQUFDLEdBQUcsQ0FBQyxrQ0FBa0MsQ0FBQyxDQUFDO1lBQ2hELElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxXQUFPLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssV0FBTyxDQUFDLFVBQVU7Z0JBQUUsT0FBTztZQUVwRixJQUFJLENBQUMsTUFBTSxHQUFHLFdBQU8sQ0FBQyxTQUFTLENBQUM7WUFDaEMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3pCLENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUU7WUFDOUIsSUFBSSxJQUFJLENBQUMsTUFBTSxHQUFHLFdBQU8sQ0FBQyxTQUFTLEVBQUU7Z0JBQ25DLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLEdBQUcsQ0FBQyxDQUFDO2FBQ3pCO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxNQUFNLEVBQUUsRUFBRTtZQUN0QyxJQUFJLENBQUMsTUFBTSxHQUFHLFdBQU8sQ0FBQyxNQUFNLENBQUM7WUFDN0IsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNyQixDQUFDLENBQUMsQ0FBQztRQUVILGdCQUFnQjtRQUNoQixJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxnQkFBWSxDQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUUsR0FBZSxFQUFFLEVBQUUsRUFBRSxFQUFFO1lBQ2pFLElBQUk7Z0JBQ0YsTUFBTSxHQUFHLEdBQUcsTUFBTSxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLGdCQUFnQixFQUFFLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDeEYsRUFBRSxJQUFJLEVBQUUsQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUM7YUFDckI7WUFBQyxPQUFPLENBQUMsRUFBRTtnQkFDVixFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQ2I7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7T0FFRztJQUNJLEtBQUssQ0FBQyxRQUFRO1FBQ25CLElBQUksR0FBRyxtQ0FDRixJQUFJLENBQUMsVUFBVSxLQUNsQixVQUFVLEVBQUUsZUFBVyxDQUFDLE9BQU8sRUFDL0IsS0FBSyxFQUFFLE1BQU0sSUFBSSxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUN2RCxDQUFDO1FBRUYsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsZ0JBQVksQ0FBQyxRQUFRLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxFQUFFO1lBQ2pELElBQUksR0FBRztnQkFBRSxPQUFPLE9BQU8sQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLENBQUM7WUFDNUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxXQUFPLENBQUMsVUFBVSxDQUFDO1lBQ2pDLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQVksQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3BELENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVNLE1BQU0sQ0FBQyxHQUFlO1FBQzNCLEdBQUcsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQztRQUN2QixJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssV0FBTyxDQUFDLFVBQVU7WUFBRSxPQUFPLE9BQU8sQ0FBQyxLQUFLLENBQUMsb0JBQW9CLENBQUMsQ0FBQztRQUVuRixPQUFPLElBQUksT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFO1lBQ3JDLE1BQU0sRUFBRSxHQUFHLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsd0JBQXdCLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUUxRixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxnQkFBWSxDQUFDLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUU7Z0JBQ3ZELFlBQVksQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDakIsR0FBRyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNuQyxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUNGO0FBeEZELG9DQXdGQyJ9