2013-08-12 89 views
0

我正在尝试构建一个“Hello World”多进程node.js HTTP服务器。Node.js集群不在监听

使用节点docs here中提供的代码示例我无法触发“监听”事件,因此HTTP服务器无法响应请求。然而,我正在开展“在线”活动。

如何让服务器响应请求?

我在OSX 10.8.4上运行,节点v0.10.7。

这是我有:

var cluster = require('cluster'); 
var http = require('http'); 
var numCPUs = require('os').cpus().length; 

if (cluster.isMaster) { 
    // Fork workers. 
    for (var i = 0; i < numCPUs; i++) { 
    cluster.fork(); 
    } 

    cluster.on('online', function(worker) { 
    console.log('A worker with #' + worker.id); 
    }); 
    cluster.on('listening', function(worker, address) { 
    console.log('A worker is now connected to ' + address.address + ':' + address.port); 
    }); 
    cluster.on('exit', function(worker, code, signal) { 
    console.log('worker ' + worker.process.pid + ' died'); 
    }); 
} else { 
    // Workers can share any TCP connection 
    // In this case its a HTTP server 
    http.createServer(function(req, res) { 
    res.writeHead(200); 
    res.end('hello world\n'); 
    }).listen(8000); 
} 
+0

您发布的示例代码对我来说工作得很好。仔细检查numCPUs是否大于0? – ChrisCM

+0

它打印“8”,因此8个进程分叉。示例代码是否实际接收并响应HTTP请求? –

+0

是的,使用您的示例代码,我访问浏览器中的以下链接:http:// localhost:8000。我看到你好世界。我在OSX 10.8.4,Node v0.8.2(很小)。 – ChrisCM

回答

0

我通过直接运行文件固定的问题。以前,我跑这是一个内衬server.js:

server.js

require("./server/app.js"); 

服务器/ app.js(在这个问题的代码片段)

通过运行node app.js群集开始监听而不是node server.js。不知道为什么这有所作为。