Невозможно создать несколько соединений из одного процесса, используя node-ipc - PullRequest
0 голосов
/ 05 октября 2019

Я использую узел 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) Как я могу создать новое соединение с провайдером для каждого клиента?

...