2013-11-21 38 views
1

我在本地机器上有一个Adobe AIR应用程序,它通过套接字连接与远程node.js服务器脚本(套接字脚本.js)通信。 此外,我通过命令行启动一个新的node.js进程,并向第二个服务器脚本(terminal-script.js)发送一些附加参数。 问题:如何将参数从terminal-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

相关问题