【问题标题】:Getting openssl stream in node.js在 node.js 中获取 openssl 流
【发布时间】:2013-06-27 10:36:07
【问题描述】:

我有一台使用 TLS 1.0 的服务器 当命令

时,它在终端上给了我无限的数据流
~$ openssl s_client -connect 'serveraddress':5000

这为我提供了我的服务器当前正在执行的实时 xml 数据流。 我想使用 node.js 或任何其他方式连接到它,使我能够将此数据流作为 websocket 或直接推送到 JS 上,但我似乎无法弄清楚如何。你们中的任何人都可以帮忙吗? 谢谢:)

【问题讨论】:

  • 好的,如果我得到你想要的,你想将你的服务器的输出流重定向到一个通过网络发送这个数据的程序吗?我不经常问这个问题,但你为什么要这样做?
  • 您是否考虑过使用您的 XML 数据制作 RSS 流?
  • @Sh3ljohn:我实际上想在 javascript 上使用这个输出流来绘制图表。但是由于这个 xml 流基于 https 而不是 wss,所以我不能直接在我的 JS 中使用它。我只是在寻找一种访问数据的方法。通过将其输出为 websocket 的本地服务器重定向是解决我的问题的一种方法。
  • 那你不能简单地使用 Unix 管道吗?这是一个很好的教程:ucblueash.edu/thomas/Intro_Unix_Text/IO_Redir_Pipes.html
  • 我不知道如何使用它们。我会通过它并回复你。谢谢

标签: javascript xml ajax node.js stream


【解决方案1】:

我认为这样的事情应该可以解决你的问题。

var terminal = require('child_process').spawn('bash');

terminal.stdout.on('data', function (data) {
    console.log('stdout: ' + data);
});

terminal.on('exit', function (code) {
        console.log('child process exited with code ' + code);
});

setTimeout(function() {
    console.log('Sending stdin to terminal');
    terminal.stdin.write("openssl s_client -connect 'serveraddress':5000");
    terminal.stdin.end();
}, 1000);

编辑: 试试这个作为一个工作示例:

terminal.stdin.write("ping www.google.de");

【讨论】:

  • 我会试试这个并回复你。谢谢:)
  • 我试过这个。它给了我这个错误:“子进程退出,代码为 255”有什么办法解决这个问题?
  • 好吧,我认为您的 openssl 命令有问题。当我尝试 terminal.stdin.write("ping www.google.de");效果很好。
猜你喜欢
  • 2012-09-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多