2013-11-21 3 views
1

У меня есть приложение Adobe AIR на локальном компьютере, которое связывается с удаленным сервером node.js (socket-script.js) через соединение сокета. Кроме того, я запускаю новый процесс node.js через командную строку и посылаю дополнительные аргументы второму серверному скрипту (terminal-script.js). Вопрос: Как отправить аргументы из терминала-script.js в socket-script.js? Впоследствии socket-script.js должен транслировать аргументы в приложение AIR. Кто-нибудь знает, как подключить два независимых рабочих процесса в Node.js? Благодарю.Отправить сообщение между двумя независимыми работающими процессами в Node.js

enter image description here

Illustration link

ответ

0

Единственный способ, который я представить себе, чтобы сделать эту работу что-то вроде этого:

1) Вы должны иметь терминально-script.js быть прослушивает сокет. Как так:

var arguments = process.args.splice(2); 
var http = require('http'); 
http.createServer(function (req, res) { 
    res.writeHead(200, {'Content-Type': 'text/plain'}); 
    res.end(arguments[0]); 
}).listen(8000, '127.0.0.1'); 

2) Просто сделайте запрос от сокета-скрипта для терминала сценария:

//somewhere in socket-script use this to grab the value from the terminal script. 
var http = require('http'); 

var options = { 
    host: 'terminal-script-host.com', 
    port: '8000', 
    path: '/' 
}; 

var req = http.get(options, function(res) { 
    res.on('data', function (data) { 
     console.log('socket-script got the data from terminal-script: ' + data); 
    }); 
}); 

Не уверен, если это помогает. Но я могу сказать вам, что было бы почти невозможно «впрыснуть» что-то в сокет-скрипт из терминального сценария, а не так, чтобы в любом случае работать с тем же запросом.

3

Используйте сервер для обмена данными между процессами:

штепсельные script.js

var net = require('net'); 
var app = null; 

var server = net.createServer(function(socket) { 
    socket.on('data', function(data){ 
     if(data.indexOf('terminal:') >-1){ 
      if(app){ 
       app.write(data); 
      } 
     } else if(data.indexOf('app:') >-1){ 
      app = socket; 
     } 
    }); 
}); 

терминально-script.js:

var net = require('net'); 
var client = net.connect({port: 9001}, function() { 
    client.write('terminal:' + process.argv[2]); 
}); 

приложение:

var net = require('net'); 
var client = net.connect({port: 9001}, function() { 
    client.write('app:connect'); 
}); 

client.on('data', function(data){ 
    if(data.indexOf('terminal:') >-1){ 
     // got terminal data 
    } 
}); 
+0

Спасибо за подсказку. Теперь это работает как шарм. – Flexer

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