dromara / dromara/electron-egg

cross服务源码

Open
#192 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
JavaScript
Stars
2.5k
Forks
336
PR merge metrics
No merged PRs in 30d

Description

async run(service, opt = {}) {
const crossConf = getConfig().cross;
const defaultOpt = crossConf[service] || {};
const targetConf = extend(true, {}, defaultOpt, opt);
if (Object.keys(targetConf).length == 0) {
throw new Error(`[ee-core] [cross] The service [${service}] config does not exit`);
}

// format params
let tmpArgs = targetConf.args;
let confPort = parseInt(getValueFromArgv(tmpArgs, 'port'));
logger.info(`targetConf: ${targetConf}, port: ${confPort}`);
// 某些程序给它传入不存在的参数时会报错
if (isNaN(confPort) && targetConf.port > 0) {
confPort = targetConf.port;
}
if (confPort > 0) {
// 动态生成port,传入的端口必须为int
confPort = await getPort({ port: confPort });
// 替换port
targetConf.args = replaceArgsValue(tmpArgs, "port", String(confPort));
}

// 创建进程
const subProcess = new CrossProcess(this, { targetConf, port: confPort });
let uniqueName = targetConf.name;
if (this.childrenMap.hasOwnProperty(uniqueName)) {
uniqueName = uniqueName + "-" + String(subProcess.pid);
}
this.childrenMap[uniqueName] = subProcess.pid;
subProcess.name = uniqueName;
this.children[subProcess.pid] = {
name: uniqueName,
entity: subProcess
};

return subProcess;
}
这句代码// 替换port
targetConf.args = replaceArgsValue(tmpArgs, "port", String(confPort));
这个函数replaceArgsValue需要优化,if (item.startsWith('port=')) { // 才替换},不然所有参数中带port的都会被影响到

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.