从Web UI访问C ++编译的可执行二进制文件

如果我的最后一个问题不清楚,这次我会更加描述清楚:

我用C ++编写了一个收集器代码,并将其编译为一个可执行的二进制文件。 这个收集器从各种服务器收集数据并将这些数据写入文件。

数据stream向我的收集器代码的速度是10 Gbps,速度只有数据写入文件。

现在我被要求从Web UI启动这个二进制文件。 这意味着只需点击Web UI,我的二进制文件就可以开始运行。 而且它一直在运行直到生命周期,直到手动死亡的命令。

我不是UI开发人员,所以请有人可以build议我如何做到这一点。

我听说过Node.js,但与节点js我无法运行我的二进制文件。

由于数据以10 Gbps的速度stream动,所以涉及较高的I / O,所以我不能冒险在这里任何缓慢。

使用node.js在服务器端运行可执行文件就像调用child_process.spawn()一样简单。

您可能需要将收集器生成的文件的内容推送到客户端,

这可以通过使用fs.watchReadable Stream来读取文件来实现。 您可以使用socket.io将数据广播到客户端。


更新这是一个使用express.js的简单实现。

 /** * app.js * make sure to install express (npm install express) * and place the collector executable beside this file * or set collectorPath to the correct path. * run the app and open 'http://0.0.0.0:3000/start' in your browser. */ var child_process = require('child_process'); var path = require('path'); var express = require('express'); var app = express(); var collector = null; app.get('/start', function (req, res) { if (collector !== null) { res.end('Collector is already running.'); return; } var collectorPath = path.join(__dirname, './collector'); collector = child_process.spawn(collectorPath, [], { stdio: 'ignore' }); collector.on('exit', function (signal, code) { console.log('Collector exited with signal: %s and code: %d', signal, code); collector = null; }); res.end('Done.'); }); app.listen(3000); console.log('Listening on port 3000');