在node.js中pipe理独特subprocess的最佳方法

我即将开始编码聊天机器人。 但是,我计划运行多个,使用包装来沟通和重新启动它们。 我过去用child_process.fork()完成了这个工作,但是效率非常低。 我也研究过spawncluster ,但是他们似乎都专注于运行同样的事情,而不是独特的机器人。 至于插件,我已经看过fleetforkfriendworkerfarm ,但是没有一个能够满足我的需求。

有什么插件或方法我没有看到帮助我做到这一点? 或者我只是想再次拥有它?

您可以在一个进程中随心所欲地使用多个聊天机器人。 Node.js中的经验法则是每个处理器核心使用一个进程,因为Node可能会有一些稍微不同的multithreading模型。

假设你还需要一些multithreading,这里有几个节点模块可以满足你的需求: node-webworker-threads , dnode 。

更新:

现在我明白你需要什么了。 Node.js文档中有一个很好的例子,我最近看到。 我只是复制并粘贴在这里:

 var normal = require('child_process').fork('child.js', ['normal']); var special = require('child_process').fork('child.js', ['special']); // Open up the server and send sockets to child var server = require('net').createServer(); server.on('connection', function (socket) { // if this is a VIP if (socket.remoteAddress === '74.125.127.100') { special.send('socket', socket); return; } // just the usual dudes normal.send('socket', socket); }); server.listen(1337); 

child.js看起来像这样:

 process.on('message', function(m, socket) { if (m === 'socket') { socket.end('You were handled as a ' + process.argv[2] + ' person'); } }); 

我相信这几乎是你所需要的。 使用不同configuration启动多个进程(如果configuration数量较less),并将套接字传递给主进程中的特定进程。