我在本地计算机上安装了Adobe AIR应用程序,它通过套接字连接与远程node.js服务器脚本(socket-script.js)进行通信。 此外,我通过命令行启动一个新的node.js进程,并向第二个服务器脚本(terminal-script.js)发送一些额外的参数。 问题:如何将参数从terminal-script.js发送到socket-script.js?然后socket-script.js应该广播 args到AIR应用程序。任何人都知道如何连接Node.js中的两个独立运行进程?感谢。
答案 0 :(得分:4)
使用服务器在进程之间进行通信:
<强>插座的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
}
});
答案 1 :(得分:0)
我设想做这项工作的唯一方法就是这样:
1)你需要让terminal-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)只需从socket脚本向终端脚本发出请求:
//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);
});
});
不确定这是否有帮助。但是我可以告诉你,从终端脚本中将一些内容“注入”套接字脚本几乎是不可能的,而不是以同样的方式处理相同的请求。