2014-01-29 4 views
0

У меня есть процесс, который выполняется на моем сервере в фоновом режиме. Объект экспортируется следующим образом:Передача переменной в запущенную программу node.js

module.exports = new Application() 

потому что я хочу, чтобы один экземпляр объекта когда-либо существовал.

У меня есть отдельный процесс, который пытается вызвать прототипированную функцию process из Application. Это выглядит примерно так

var app = require('./Application.js'); 

app.process(process.argv[2]); 

и говорят, что файл называется process.js. Затем я позвоню node process.js thing_to_pass

Проблема в том, что каждый раз, когда я это делаю, она повторно запускает application, что приводит к поведению, которое я не ищу.

Как я могу обойти это? Я думал об использовании socket.io для связи между двумя процессами, но это кажется хакерским.

ответ

3

Вы не сможете спуститься по дороге, по которой пытаетесь спуститься. Поскольку у вас есть два разных процесса, вы собираетесь сделать два разных экземпляра Application. Отправка сообщений от одного процесса к другому через socket.io - это не хакишское imo, определенно что-то нужно учитывать.

Вы также могли бы рассмотреть возможность использования child_process и отправки сообщений с killhttp://nodejs.org/api/process.html

+0

Почему это объявление нового экземпляра приложения? почему он не просто втягивает ту, которая уже существует? – Loourr

+1

Поскольку вы используете два разных процесса, они полностью независимы. – bendecoste

0

Если вы используете Linux, я бы предложил использовать сокеты UNIX-домена.

0

Если вы хотите, чтобы выполняемый процесс получил новые данные, он должен каким-то образом прослушать эти данные. Независимо от того, настроите ли вы HTTP-сервер и принимаете и обрабатываете запросы с новыми данными или socket.io, или вы ждете информации из командной строки, смотрите файл для изменений или что у вас есть.

Если вы запускаете целый отдельный процесс, он будет логически разделен во всех отношениях от текущего процесса и благодарит доброту, иначе полностью отдельные приложения могут беспорядочно конфликтовать друг с другом.

Смежные вопросы