我继承了Node.js代码并且遇到了这些行
....
var app1 = express();
app1.listen(8080)
var app2 = express();
app2.listen(8081)
var app3 = express();
app3.listen(8082)
....
所有这些行都在一个名为serverInit.js的js文件中
每个app1,app2和app3都有自己的路由和不同的代码。
我想知道这是如何运作的? Node是否为每个app1,app2和app3创建一个单独的线程,或者所有应用程序都将由一个线程提供服务?
提前致谢
答案 0 :(得分:2)
不,您的应用程序代码(包括Express库)是单线程的。当然,Node本身是多线程的,网络I / O是在不同的线程上处理的 - 但无论你有一个Express应用程序还是数百个,都是如此。
您所做的是创建三个Express实例,并将每个实例绑定到不同的端口。每个端口上的请求都将分派到匹配的Express实例。
答案 1 :(得分:0)
有一个v8实例(因为三个服务器可能共享变量等,因此安排多个v8实例非常困难)。应用程序在所有三个端口上侦听网络连接,app1响应端口8080上的请求,8081上的app2和8082上的app3。