UNPKG

@tuia/eureka-client-ts

Version:

100 lines 3.34 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var address = require("address"); var client_1 = require("./client"); var pool_1 = require("./pool"); 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 = 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://" + ip + ":" + 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