gpt4 book ai didi

javascript - Node.js 在一个端口上运行两个应用程序

转载 作者:太空宇宙 更新时间:2023-11-04 02:58:59 25 4
gpt4 key购买 nike

为了减少因长期应用程序重新启动而导致的停机时间,我想到了类似的方法:

  1. 端口 80 上的主应用 #1。
  2. 也会在端口 80 上对应用程序 #2 进行故障转移,但仅在应用程序 #1 无法工作时才应答请求。
  3. 让应用 #2 为活跃用户提供“维护”消息。

在同一端口上运行两个进程最终会出现错误:EADDRINUSE - 因此简单的方法不起作用。我偶然发现了 server.on('error') 事件,并决定让 App #2 等待,直到 App #1 可能停止,以便端口变得可用:

function tryPitchIn(){
var server = http.createServer(app);

server.on('listening', function(){
console.log('Application #1 crashed/ended');
console.log('Pitching in...');
});

server.on('error', function(){
console.log('noting to do');
setTimeout(tryPitchIn, 250);
});

server.listen(80);
}

tryPitchIn();

尽管上述方法运行良好,但我必须在 App #1 初始化时结束 App #2,这在不同的操作系统上并不容易做到。

是否可以为 Node 进程(由 npm start 初始化)提供一个静态 ID,以从另一个进程(最好是跨操作系统)终止它?或者该场景的其他想法?

最佳答案

您可以在另一个端口上为您的应用程序 #1 提供服务,并编写一个微应用程序来代理对其的请求,并在对应用程序 #1 的请求失败时返回其他内容。您可以使用像here这样的node-http-proxy ,或者推出您自己的解决方案,例如 this并添加一个“on error”子句。

关于javascript - Node.js 在一个端口上运行两个应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19107242/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com