当前位置 : 主页 > 网页制作 > Nodejs >

node.js – 是否可以使nodejs脚本侦听同一端口

来源:互联网 收集:自由互联 发布时间:2021-06-16
我在另一个帖子中问同样的问题,但答案误解了我的问题,因此我再问一遍 我有两个脚本 s1.js, s2.js 都使用快速框架并听取某些端口. 我打电话 node s1.js //listens to port 8080node s2.js //listens t
我在另一个帖子中问同样的问题,但答案误解了我的问题,因此我再问一遍

我有两个脚本

s1.js, s2.js

都使用快速框架并听取某些端口.

我打电话

node s1.js //listens to port 8080

node s2.js //listens to port 8081

要启动这两个脚本,一个侦听端口8080,另一个侦听端口8081.

是否可以使nodejs脚本侦听相同的端口8080?
我打电话时如何分开这两个脚本

www.abc.com:8080

您的评论欢迎

更新的问题

我尝试代码app.js

var express = require("express");
  var app = express();

  app.use('/app1', require( './app1/index.js').app);
  app.use('/app2', require( './app2/index.js').app);

  app.listen(8081);

在路径./app1/index.js

var express = require("express");
  var app = express();
  console.log("app1");
  app.listen(8081);

在路径./app2/index.js

var express = require("express");
  var app = express();
  console.log("app2");
  app.listen(8081);

然后我打电话给

node app

控制台报告错误:

app1

/Users/myname/node_modules/express/lib/application.js:111
  if (fn.handle && fn.set) app = fn;
        ^
TypeError: Cannot read property 'handle' of undefined
    at Function.app.use (/Users/zhengwang/node_modules/express/lib/application.js:111:9)
    at Object.<anonymous> (/Users/zhengwang/multi.js:27:7)
    at Module._compile (module.js:456:26)
    at Object.Module._extensions..js (module.js:474:10)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:312:12)
    at Function.Module.runMain (module.js:497:10)
    at startup (node.js:119:16)
    at node.js:901:3
群集执行此操作,Express.vhost也是如此.实际上你可以使用两者并且只使用1个端口.

// server.js
var cluster = require('cluster');
var express = require('express');
var app = express ();

var cpus = require('os').cpus().length - 1;

if(cluster.isMaster) {
    for(var i=0;i<cpus;i++) {
        cluster.fork ();
    }
}
else {
    app
        .use( express.vhost('www.site1.com'), require('./site1.js').app ) )
        .use( express.vhost('www.site2.com'), require('./site2.js').app ) )
        .listen(8080);
}

在site1.js,site2.js中,你可以像编写任何其他节点应用程序一样编写它们,除了两件小事.导出你的应用程序(var app = exports.app = express()),并且不要在这两个文件中监听(app.listen(8080)).您可以看到server.js已经为您监听,并且还需要从它们输出两个“app”.现在,同一服务器上的所有站点都可以运行在同一个端口上,也可以运行在服务器所拥有的每个CPU上.我相信你的服务器本身也需要正确设置,对于多个虚拟主机,但这超出了提出的问题.

群集处理向运行的其中一个节点应用程序(server.js)发送请求,然后根据使用的URL为请求表达使用正确应用程序(site1.js,site2.js)的交易.令人惊讶的简单,我会说.我喜欢节点.

网友评论