【问题标题】:Read from a named pipe in JavaScript从 JavaScript 中的命名管道读取
【发布时间】:2014-08-03 04:37:25
【问题描述】:

我正在尝试创建一个网页(使用 JavaScript 和 HTML)来显示另一个进程收集的数据。该页面是用 HTML 编写的,并在虚拟机上使用 Apache 托管,我可以通过浏览器访问该虚拟机。

我的问题在于实际上将数据放入 HTML 页面。我以前是从文本文件中读取的,但我工作的人想要一个更优雅的解决方案,使用进程间通信,特别是命名管道。我已经尝试了两天来弄清楚如何从管道读取到 JavaScript,但我完全没有运气。

所以我的问题是,有没有办法做到这一点?如果没有,我可以使用某种解决方法来获得相同的结果吗?

各种细节:

  • 生成数据的进程和网页内的脚本在同一台机器上运行。

  • 如果有什么不同的话,整个设置都位于虚拟机上。

  • 数据只是一个字符串,没什么花哨的。我已经从 C 程序进入管道就好了,JavaScript 端是问题出现的地方。

抱歉这个冗长的问题,非常感谢您的帮助!

编辑:也欢迎使用 HTML5 和 node.js 为网页制作动画的解决方案。我目前正在研究这个作为替代解决方案,同时等待回复。

【问题讨论】:

  • 为什么不将文件写成一个可以在浏览器上轻松使用的静态 JS/JSON 文件?
  • 我认为 websockets(甚至是小型网络服务器)可能是一种解决方法,但是您当然需要将服务器嵌入到提供数据的进程中。
  • @Stan Embedding 不会是问题,如果我找不到更快的方法,这可能就是我前进的方向。现在我有点坚持希望我可以通过对我的代码进行最小的更改来做到这一点,但它看起来不太可能。 Diodeus,这会起作用,但我的雇主似乎非常热衷于使用管道或类似性质的东西(目前)。不过建议很好,我很可能会回来。
  • 使用 Node.js 服务器并通过 Web 套接字将您的命名管道流式传输到 BinaryJS 流到客户端。 binaryjs.com

标签: javascript html node.js named-pipes


【解决方案1】:

您可以使用 node.js 生成生成此数据的进程,假设您可以使用 stdin(0)/stdout(1) 作为命名管道,然后使用 socket.io 将数据流式传输到客户端。

socket.io

child_process.spawn

【讨论】:

  • 我想到了这一点,这就是我一直在努力的解决方案。我只是不完全确定如何继续为画布设置动画,套接字会为此提供一种方法吗?
  • 套接字只会为您提供一种将数据流式传输到客户端的方法。然后,您的客户端代码将不得不在该画布接收到更多数据时管理该画布的状态。在不知道数据的确切性质的情况下,我不能肯定地说,但您可能需要考虑研究 D3。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多