【问题标题】:Send message between two independent running processes in Node.js在 Node.js 中两个独立运行的进程之间发送消息
【发布时间】:2013-11-21 22:31:40
【问题描述】:

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

Illustration link

【问题讨论】:

    标签: javascript node.js sockets process


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      我认为完成这项工作的唯一方法是这样的:

      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-script 向终端脚本发出请求:

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

      不确定这是否有帮助。但我可以告诉你,从终端脚本“注入”某些东西到套接字脚本中几乎是不可能的,而不是无论如何都可以处理相同的请求。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-03-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-06-30
        相关资源
        最近更新 更多