Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript NodeJS集群问题_Javascript_Node.js_Typescript_Node Cluster - Fatal编程技术网

Javascript NodeJS集群问题

Javascript NodeJS集群问题,javascript,node.js,typescript,node-cluster,Javascript,Node.js,Typescript,Node Cluster,StackOverflow的人们好 我的问题如下: 我正在尝试使用Node的cluster工具对express.js API进行集群化 我的基本文件相关结构(是的,我称之为Skynet…): Server.ts从const skynetAPI=Express()创建一个快速侦听器不在SkynetCore.ts中 这将传递给该函数: 导出函数F_ServerListener(express:any,globalloger:any):void 我得到了另一个功能,它应该在第一个功能的基础上管理/创

StackOverflow的人们好

我的问题如下: 我正在尝试使用Node的
cluster
工具对express.js API进行集群化

我的基本文件相关结构(是的,我称之为Skynet…):

Server.ts
const skynetAPI=Express()创建一个快速侦听器不在SkynetCore.ts中

这将传递给该函数:

导出函数F_ServerListener(express:any,globalloger:any):void 我得到了另一个功能,它应该在第一个功能的基础上管理/创建集群:

导出函数F_ClusterServerListener(express:any,globalloger:any):void
SkynetCore.ts中的主方法
F\u Main
调用
F\u ClusterServerListener(…)

因此,确切的问题是,
F_ClusterServerListener
应该只使用
F_ServerListener
函数,但它会重新启动整个应用程序。它只应该“重新启动”F_ServerListener,但它会重新启动所有内容

我怎样才能阻止它呢

SkynetCore.ts


/**
*文件:src/SkynetCore.ts
*描述:主文件
*作者:奥利弗·卡格
*/
//启用dotenv
require('dotenv').config()
//快车
const express=require('express');
const skynetApi=express();
//信号记录器
常量信号=要求(“信号”);
常数记录器=signale.scope('Skynet'))
//启动
从“/Startup”导入{F_EnableMiddleware};
//从“/YargParser”导入{F_GetYargs}--不会花时间在自动取款机上的
从“/Server”导入{F_ClusterServerListener};
/**
*@description主方法
*@作者奥利弗·卡格
*/
异步函数F_Main():Promise{
F_EnableMiddleware(skynetApi、记录器);
F_ClusterServerListener(skynetApi,记录器);
}
//主函数调用
F_Main()
.catch(e=>logger.fatal(新错误(e));
Server.ts


/**
*文件:src/Server.ts
*描述:服务器文件
*作者:奥利弗·卡格
*/
/**
*@description创建Express服务器/侦听器
*@作者奥利弗·卡格
*@param express实例
*@param globalloger信号记录器实例
*/
导出函数F_ServerListener(express:any,globalloger:any):void{
const logger=globalloger.scope('Skynet','Server');
//创建服务器
const skynetServer=express.listen(process.env.PORT,process.env.HOST,()=>{
logger.success(`Skynet实例在:${process.env.HOST}:${process.env.PORT}`上可用);
}).on('error',(err:any)=>{
logger.fatal(新错误(err));
});
}
常量集群=需要(“集群”);
常数os=要求(“os”);
导出函数F_ClusterServerListener(express:any,globalloger:any):void{
const logger=globalloger.scope('Skynet','Cluster Master');
常量CPU=os.CPUS();
if(cluster.isMaster){
forEach(函数(){
cluster.fork()
});
cluster.on(“侦听”,函数(worker:any){
logger.start(`Cluster${worker.process.pid}已连接`);
});
cluster.on(“断开”),功能(工作:任何){
logger.stop(`Cluster${worker.process.pid}已断开连接`);
});
cluster.on(“退出”,函数(worker:any){
logger.error(`Cluster${worker.process.pid}dead`);
//确保在旧集群死亡时启动新集群
cluster.fork();
});
}否则{
F_服务器侦听器(express、GlobalLoger);
}
}
GitHub上提供的源代码:

试试pm2,
+ src
 - SkynetCore.ts
 - Server.ts
 - Startup.ts