Node.js Express - 除了端口冲突之外避免两次启动服务器的最佳方法
Node.js Express - best way to avoid starting a server twice besides port conflict
所以我正在为 Node.js 创建一个用户态库,该库包含一个服务器。用户可以发出一个命令来启动服务器两次——但服务器不需要重新启动,它只需要启动一次。我想尽量减少用户等待库告诉用户服务器已经在端口 X 上监听的时间,因为这种情况可能经常发生,因为库总是需要检查服务器是否已经上线.我可以等待系统 "already listening" 错误,但有没有比这更快失败的方法?有没有办法锁定其他资源,最好的方法是什么?
请注意,这始终是本地主机上的服务器 运行。
我发现 tcp-ping 库可以非常快速地确定服务器是否可用。
const tcpp = require('tcp-ping');
tcpp.probe(server.host, server.port, function (err, available) {
//callback always seems to fire within 10ms...
if(err){
//some crappy error
}
else if(available){
//server is live
}
else{
// server is not live
}
});
tcp-ping 库可能是执行此操作的最佳方法吗?
您始终可以在某个位置保留一个 .server_status
文件以指示服务器已启动。
只需要在启动时查找(存在则退出),启动时创建,宕机时删除。许多应用程序都使用这种方法
所以我正在为 Node.js 创建一个用户态库,该库包含一个服务器。用户可以发出一个命令来启动服务器两次——但服务器不需要重新启动,它只需要启动一次。我想尽量减少用户等待库告诉用户服务器已经在端口 X 上监听的时间,因为这种情况可能经常发生,因为库总是需要检查服务器是否已经上线.我可以等待系统 "already listening" 错误,但有没有比这更快失败的方法?有没有办法锁定其他资源,最好的方法是什么?
请注意,这始终是本地主机上的服务器 运行。
我发现 tcp-ping 库可以非常快速地确定服务器是否可用。
const tcpp = require('tcp-ping');
tcpp.probe(server.host, server.port, function (err, available) {
//callback always seems to fire within 10ms...
if(err){
//some crappy error
}
else if(available){
//server is live
}
else{
// server is not live
}
});
tcp-ping 库可能是执行此操作的最佳方法吗?
您始终可以在某个位置保留一个 .server_status
文件以指示服务器已启动。
只需要在启动时查找(存在则退出),启动时创建,宕机时删除。许多应用程序都使用这种方法