Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/397.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在Node.js中的两个独立运行进程之间发送消息_Javascript_Node.js_Sockets_Process - Fatal编程技术网

Javascript 在Node.js中的两个独立运行进程之间发送消息

Javascript 在Node.js中的两个独立运行进程之间发送消息,javascript,node.js,sockets,process,Javascript,Node.js,Sockets,Process,我在本地机器上有一个AdobeAIR应用程序,它通过套接字连接与远程node.js服务器脚本(socket script.js)通信。 此外,我通过命令行启动了一个新的node.js进程,并向第二个服务器脚本(terminal script.js)发送了一些附加参数。 问题:如何将参数从terminal-script.js发送到socket-script.js?之后,socket-script.js应该广播 args到AIR应用程序。有人知道如何在Node.js中连接两个独立运行的进程吗?谢谢

我在本地机器上有一个AdobeAIR应用程序,它通过套接字连接与远程node.js服务器脚本(socket script.js)通信。 此外,我通过命令行启动了一个新的node.js进程,并向第二个服务器脚本(terminal script.js)发送了一些附加参数。 问题:如何将参数从terminal-script.js发送到socket-script.js?之后,socket-script.js应该广播 args到AIR应用程序。有人知道如何在Node.js中连接两个独立运行的进程吗?谢谢


我认为实现这一目标的唯一方法是:

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) 只需从套接字脚本向终端脚本发出请求:

//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);
     });
});

不确定这是否有帮助。但我可以告诉您,从终端脚本向套接字脚本中“注入”某些内容几乎是不可能的,而不是以任何方式处理相同的请求。

使用服务器在进程之间进行通信:

socket 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;
        }
    });
});
终端脚本.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
    }
});
应用程序:

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
    }
});