@tbmini/eureka-client-ts
Version:
--- id: eureka-client-ts ---
104 lines • 3.41 kB
JavaScript
;
/** @format */
Object.defineProperty(exports, "__esModule", { value: true });
var client_1 = require("./client");
var pool_1 = require("./pool");
var address = require('address');
var NODE_ENV = process.env.NODE_ENV || 'dev';
var Eurekaclient = /** @class */ (function () {
function Eurekaclient(options) {
options.services.push(options.appName);
this.opts = options;
if (NODE_ENV) {
this.eureka = (0, client_1.default)(options);
this.pool = new pool_1.default(this.eureka, this.opts.services);
}
else {
console.log("eureka use local");
}
}
/**
* 启动eureka
* @returns Promise<Eureka>
*/
Eurekaclient.prototype.start = function () {
var _a = this, opts = _a.opts, eureka = _a.eureka;
if (NODE_ENV) {
eureka.start();
}
return new Promise(function (resolve) {
console.log('Eureka checking...');
var count = 1;
function checkHost() {
// 超过检测次数,也返回成功(默认5秒)
if (count >= 10) {
resolve(eureka);
}
// 没有依赖服务,或已连通,立即返回成功
if (opts.services.length === 0) {
resolve(eureka);
}
setTimeout(function () {
checkHost();
count++;
}, 500);
}
checkHost();
});
};
/**
* stop
*/
Eurekaclient.prototype.stop = function () {
this.eureka.stop();
};
/**
* 获取指定应用的ip
* @param {(string | number)} name 应用名
* @param {(string)} localIp 客户端IP
* @param {string} [filterGroup] 要过滤的group service
*/
Eurekaclient.prototype.getHost = function (name, localIp, filterGroup) {
if (!NODE_ENV) {
var ip = address.ip();
return "http://".concat(ip, ":").concat(this.opts.port);
}
return this.pool.getHost(name, localIp, filterGroup);
};
/** 获取代理信息(客户端IP, serviceGroupKey) */
Eurekaclient.prototype.getProxyInfoFromReq = function (req) {
var name = '_duibaServiceGroupKey';
var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)');
// 获取多场景的cookie
var arr = [];
var serviceGroupKey = '';
if (req.headers.cookie && (arr = req.headers.cookie.match(reg))) {
serviceGroupKey = unescape(arr[2]);
}
// 获取客户端ip地址
var ip = req.headers['x-real-ip'] ||
req.headers['x-forwarded-for'] ||
req.connection.remoteAddres ||
req.socket.remoteAddress ||
'';
if (ip.indexOf('::ffff:') !== -1) {
ip = ip.substring(7);
}
return { ip: ip, serviceGroupKey: serviceGroupKey };
};
/**
* 获取所有eureka
*/
Eurekaclient.prototype.getAllEurekas = function () {
return this.pool.getAllEurekas();
};
/**
* 获取所有实例下的host
*/
Eurekaclient.prototype.getAllHostName = function () {
return this.pool.getAllHostName();
};
return Eurekaclient;
}());
exports.default = Eurekaclient;
//# sourceMappingURL=index.js.map