Я использую узел ipc для соединения двух процессов узла.
Один - это веб-приложение, которое выполняет логику по требованию пользователя. Поэтому, когда пользователю нужно обработать некоторые данные, он отправляет запрос POST, с этого почтового запроса, на сервер, на котором я подключаюсь к node-ipc
серверу, который называется provider
:
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) Как я могу создать новое соединение с провайдером для каждого клиента?