0

我目前正在做一个项目,以在当前服务器超载时自动动态生成新服务器。我正在使用node.js来创建服务器。我还使用变量计算了请求数。这个程序对吗?还是我应该更改我的代码?

我使用了一个函数来生成一个带有参数服务器名称和端口号的服务器,但我在指定的端口号中遇到错误。错误是process.nextTick error。错误出在函数调用中的端口号上。

我需要一个正确的过程来将端口号作为参数传递给函数。

代码

var http = require('http');
var fs = require('fs');
var file = fs.readFileSync('file.html');
var reqno = 1;

function spawnserver(servername, port) {
    servername = http.createServer(function (req, res) {
        res.writeHeader(200, {
            "Content-Type": "text/html"
        });
        res.end(file);
    });
    servername.listen(port);
}
var server = http.createServer(function (req, res) {
    res.writeHeader(200, {
        "Content-Type": "text/html"
    });
    res.end(file);
    reqno++;
});
server.listen(3000);
if (reqno > 200) {
    function spawnserver(server2, 9615);
}

错误

vishnu@vishnu-VirtualBox:~$ node server.js

/home/vishnu/server.js:21 function spawnserver(servername,9615);
                                ^^^^

node.js:201
        throw e; // process.nextTick error, or 'error' event on first tick
              ^ SyntaxError: Unexpected number
    at Module._compile (module.js:429:25)
    at Object..js (module.js:459:10)
    at Module.load (module.js:348:32)
    at Function._load (module.js:308:12)
    at Array.0 (module.js:479:10)
    at EventEmitter._tickCallback (node.js:192:41)
4

3 回答 3

0

通过使用集群来利用 node.js 并行编程。 https://nodejs.org/api/all.html#all_cluster

于 2015-04-02T13:12:59.230 回答
0

function 关键字用于定义一个函数,而不是用于执行一个函数。在这一行:function spawnserver(server2, 9615);,删除function

于 2015-03-04T16:28:13.927 回答
0

你的问题解决了吗?如果您问什么方式可以传递端口号?我不太了解您的要求,例如您事先知道端口号吗?或者它也是动态分配的。您要生成多少台新服务器?只有一个?

其中一种方法是使用 config.json 来定义端口号。然后您的应用程序可以从配置文件中获取端口号。

于 2015-04-13T23:45:23.957 回答