sdg-admin
Version:
pomelo sdg admin plugin
75 lines • 6.33 kB
JavaScript
"use strict";
/**
* 要求使用一个用户名和口令主动发起到master的连接及注册,
* 验证通过后,AdminClient会维护到master的连接,然后就可以向master发送request/notify了
*/
Object.defineProperty(exports, "__esModule", { value: true });
exports.AdminClient = void 0;
const tslib_1 = require("tslib");
const socket_io_client_1 = tslib_1.__importDefault(require("socket.io-client"));
const __1 = require("..");
class AdminClient {
constructor(opts) {
this.status = __1.EStatus.INIT;
this.host = opts.host;
this.port = opts.port;
this.username = opts.username;
this.password = opts.password;
this.timeout = opts.timeout || 5000;
this.path = opts.path || '';
}
start() {
console.log('[AdminClient] start');
this.connect();
}
connect() {
const uri = this.port ? `${this.host}:${this.port}` : this.host;
const config = {
path: '',
transports: ['websocket', 'polling']
};
if (this.path) {
config.path = `/${this.path}/socket.io`;
}
this.socket = socket_io_client_1.default(uri, config);
this.socket.on('connect', () => {
console.log(`[AdminClient] connect to server: ${uri}`);
if (this.status === __1.EStatus.CONNECTED || this.status === __1.EStatus.REGISTERED)
return;
this.status = __1.EStatus.CONNECTED;
this.register();
});
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');
});
}
async request(moduleId, body) {
return this.doSend({ moduleId, body });
}
register() {
this.socket.emit(__1.ESocketEvent.REGISTER, { moduleType: __1.EModuleType.CLIENT, username: this.username, password: this.password }, (err) => {
if (err)
return console.error('AUTH FAILED');
this.status = __1.EStatus.REGISTERED;
});
}
doSend(msg) {
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.CLIENT, msg, (err, res) => {
clearTimeout(to);
err ? reject(err) : resolve(res);
});
});
}
}
exports.AdminClient = AdminClient;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRtaW5DbGllbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY2xpZW50L2FkbWluQ2xpZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7O0dBR0c7Ozs7QUFFSCxnRkFBK0M7QUFFL0MsMEJBQWtHO0FBRWxHLE1BQWEsV0FBVztJQVV0QixZQUFZLElBQXFCO1FBSDFCLFdBQU0sR0FBWSxXQUFPLENBQUMsSUFBSSxDQUFDO1FBSXBDLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztRQUN0QixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7UUFDdEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO1FBQzlCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztRQUM5QixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDO1FBQ3BDLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksSUFBSSxFQUFFLENBQUM7SUFDOUIsQ0FBQztJQUVNLEtBQUs7UUFDVixPQUFPLENBQUMsR0FBRyxDQUFDLHFCQUFxQixDQUFDLENBQUM7UUFDbkMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ2pCLENBQUM7SUFFTSxPQUFPO1FBQ1osTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztRQUNoRSxNQUFNLE1BQU0sR0FBRztZQUNiLElBQUksRUFBRSxFQUFFO1lBQ1IsVUFBVSxFQUFFLENBQUMsV0FBVyxFQUFFLFNBQVMsQ0FBQztTQUNyQyxDQUFDO1FBQ0YsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFO1lBQ2Is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