将数据从NodeJS传输到C ++应用程序

我想将信息从nodejs传输到在Linux平台上运行的embedded式C ++应用程序。 这可能吗?

主程序是用C ++编写的,软件更新程序(Node JS)是一个独立的应用程序,由主C ++程序调用。

我想解释数据传输将要发生的环境。 具体如下:

  1. Main C ++应用程序调用独立的NodeJS应用程序
  2. Node JS进行SOAP调用,并从Web获取可用的更新名称
  3. 然后将名称传递给主应用程序,主应用程序(用户)select要下载的软件更新。
  4. 节点JS然后下载软件更新并退出。

这种数据传输可能吗?

谢谢

那么,有些问题:

主应用程序如何传输数据到节点应用程序 参数? 环境variables? HOw节点将数据返回到主应用程序? 标准输出? 一些RPC? 共享记忆,消息队列?

有很多方法可以做到这一点我们需要模式细节来帮助你

任何方式,一个简单的例子,将工作

  • 主要的应用程序像调用“MakeTheSOARequest”

    node app "makeTheSOARequest" 
  • 节点进行调用并将结果打印到新文件,然后退出

  • 主应用程序读取文件,做他们的业务,并再次调用节点应用程序的参数

     node app --download swudtae1, swupdate2 .. swupdateN 
  • 节点应用程序下载所需的文件并退出

人们正在build议奇怪的方式来传输数据(我的意思是,共享内存,认真?IPC消息队列?)。 在这种情况下传递数据最明显的方法是使用命令行参数和标准输出。

这里是一个假的获取和下载更新的节点应用程序的例子。 如果在没有参数的情况下调用,它将获得可用的更新并将其打印在标准输出中 如果使用参数调用,则会下载指定为参数的更新。

主要的应用程序是一个简单的shell脚本(但是你可以从C,C ++或任何允许运行外部程序的语言中调用Node程序)。 它首先运行Node应用程序以获得可用更新,然后只select其中的前两个,然后再次运行Node应用程序以下载这两个更新。

getUpdates()downloadUpdates()是返回示例数据的模型,但您可以在其中执行任何您需要的内容来返回实际的数据。

nodeapp.js

 #!/usr/bin/env node 'use strict'; function getUpdates() { return new Promise((res, rej) => { console.error('Getting available updates ...'); setTimeout(() => { var updates = ['update1', 'update2', 'update3']; console.error('Available updates:', updates.join(', ')); res(updates); }, 1000); }); } function downloadUpdates(list) { return new Promise((res, rej) => { console.error('Downloading updates:', list.join(', ')); setTimeout(() => { console.error('Download complete.'); res(); }, 3000); }); } if (process.argv.length < 3) { getUpdates() .then(updates => { updates.forEach(i => console.log(i)); process.exit(0); }) .catch(err => { console.error('Error:', err); process.exit(1); }); } else { var updates = process.argv.slice(2); downloadUpdates(updates) .then(() => { process.exit(0); }) .catch(err => { console.error('Error:', err); process.exit(1); }); } 

mainapp.sh

 #!/bin/bash echo GETTING AVAILABLE UPDATES available=(`./nodeapp.js`) echo GOT AVAILABLE wanted="${available[0]} ${available[1]}" echo TRYING TO DOWNLOAD: $wanted ./nodeapp.js $wanted && echo DONE || echo ERROR 

shell脚本以大写forms打印所有内容,使其能够看到哪个程序打印哪条消息。 运行./mainapp.sh的结果是:

 GETTING AVAILABLE UPDATES Getting available updates ... Available updates: update1, update2, update3 GOT AVAILABLE TRYING TO DOWNLOAD: update1 update2 Downloading updates: update1, update2 Download complete. DONE 

没有IPC,没有共享内存,没有TCP,UDP或Unix套接字。 只是简单的旧的论点和标准输出。