在node.js中的进程上共享快速端口

时间:2013-12-27 03:53:20

标签: node.js express

所以我从child.fork切换到cluster.fork以生成我运行的聊天机器人,因为群集共享tcp端口。但是,我似乎无法让集群在同一个端口上侦听。

代码:

var cluster = require('cluster');
var express = require('express');

if (cluster.isMaster) {
  cluster.fork({path:'hello'});
  cluster.fork({path:'goodbye'});
} else {
  var web = express();
  web.get("/"+process.env.path,function (req,res){
    return res.end("hello, "+process.env.path);
  });
  web.listen(3000);
}

这是一半工作。我现在没有EADDRINUSE错误,但只显示其中一条路径。

1 个答案:

答案 0 :(得分:1)

由于很多原因,它无法运作。

  1. express.express不存在。您正在寻找简单的express方法
  2. process.evn不存在。您正在寻找process.env
  3. 您没有在路线中向客户返回任何内容。您应该使用res.end或其他方法来响应客户端。查看http module documentationexpress one
  4. 工作人员可以共享tcp连接。主人不能。
  5. 一些有效的代码:

    var cluster = require('cluster');
    var express = require('express');
    
    
    if (cluster.isMaster) {
      cluster.fork({path:'hello'});
    } else {
      //this is in a required file
        var web = express();
        web.get("/"+process.env.path, function(req,res){
          res.end("hello world!");
        });
        web.listen(3000);
    }
    

    如果您想使用多个工作人员,只需在if(cluster.isMaster)条件下分叉。