我正在使用节点ipc连接两个节点进程。
一个是Web应用程序,它根据用户需求执行逻辑。因此,当用户需要处理一些数据时,它会从该发布请求中,在我连接到node-ipc
服务器(称为provider
)的服务器上发送该发布请求中的POST请求:
function do_work(lists,callback)
{
var ipc = require('node-ipc');
ipc.config.id = 'client';
ipc.config.maxRetries = 0;
ipc.connectTo('provider',function(){
ipc.of.provider.on(
'disconnect',
function () {
ipc.log('disconnected'.notice);
}
);
ipc.of.provider.on(
'error',
function (err) {
ipc.log(err);
//send error in callback
callback(err,null):
}
);
ipc.of.provider.on(
'result',
function (data) {
//send result in callback
callback(null,data):
}
);
var params = JSON.stringify(lists);
ipc.of.provider.emit(
'grab',
params
);
});
}
我肯定会遇到像20个客户端一样同时调用do_work
的情况,因此,据我了解,尽管我将var ipc = require('node-ipc');
放在本地,连接对象还是全局的,并且存储在模块深度内
有2个问题:
1)在这种情况下,同时有20个客户端,对do_function
的每次调用都会覆盖ipc.of.provider.on
侦听器,而我最终陷入混乱吗?我认为是这样,因为ipc连接是全局的。
2)如何为每个客户端创建与提供商的新连接?