Javascript 仅使用1个工作进程的节点ipc群集

Javascript 仅使用1个工作进程的节点ipc群集,javascript,node.js,cluster-computing,ipc,Javascript,Node.js,Cluster Computing,Ipc,我在windows 8.1上的nodejs中使用节点ipc和群集,并已成功群集ipc服务器,并创建了与CPU数量相同的进程(在我的示例中为4个),所有进程共享相同的端口和id 我正在将多个客户端连接到此群集服务器,并希望主进程将任务委派给一个空闲的工作进程。然而,这不起作用,主人总是选择同一个工人 我已检查,所有工作进程都在运行。我怎样才能让主人每次都选择最不忙的工人呢 下面是服务器代码 var os = require('os'); var numCPUs = os.cpus().length

我在windows 8.1上的nodejs中使用节点ipc和群集,并已成功群集ipc服务器,并创建了与CPU数量相同的进程(在我的示例中为4个),所有进程共享相同的端口和id

我正在将多个客户端连接到此群集服务器,并希望主进程将任务委派给一个空闲的工作进程。然而,这不起作用,主人总是选择同一个工人

我已检查,所有工作进程都在运行。我怎样才能让主人每次都选择最不忙的工人呢

下面是服务器代码

var os = require('os');
var numCPUs = os.cpus().length;
var cluster = require('cluster');
var ipc = require('node-ipc');

if (cluster.isMaster) {

    console.log("I am master, launching workers");

    for (var i = 0; i < numCPUs; i++) {
        cluster.fork();
        console.log("worker " + i + " launched");
    }

} else {

    ipc.config.id = 'worldserver';
    ipc.config.retry= 1500;
    ipc.config.silent = true;

    console.log(`I am worker #${cluster.worker.id}`, process.pid);

    ipc.serve(
        function(){
            ipc.server.on('sayhello', function(data,socket) {
                    console.log(`I am worker #${cluster.worker.id}`, process.pid);
                    ipc.server.emit(
                        socket,
                        'message',
                        'hello'
                    );
                }
            );
            ipc.server.on('error', function(e) {
                console.log('IPC ERROR!!', e);
            });
    });

    ipc.server.start();
}
var ipc=require('node-ipc');

ipc.config.id   = 'hello';
ipc.config.retry= 1500;
ipc.config.silent = true;

setInterval(function() {
    ipc.connectTo(
        'worldserver',
        function(){

                console.log("sending something");
                ipc.of.worldserver.emit(
                    'sayhello',
                    "true"
                );

                ipc.of.worldserver.on(
                    'message',
                    function(data){
                        console.log('I got this message from the server:');
                        console.log(data);
                    }
                );  

        }
    );
}, 20);