我正在通过Meteor应用程序控制远程机器(连接到投影仪和其他硬件)的系统。目前,我们正在使用用C ++编写的本土DDP客户端来实现这一目标,但这种方法并不像我想的那样灵活:
所以我想到了用JavaScript重写C ++应用程序的Meteor部分的想法。理想情况下,我希望有一个特殊的客户端(称为headless
,类似于server
和client
):
如果这个客户端不包含任何实际代码,只是一段引导代码,那就更好了。引导程序将从服务器下载实际的应用程序代码,并在更新服务器时重新下载它,其方式与HTML客户端相同。这会使更新变得更容易,因为我们可以假设服务器和客户端始终运行相同的版本。
这样的事情存在吗?如果没有,如果没有不合理的努力,我能有多接近?搜索"流星无头客户"和"流星节点客户端"没有帮助我,我找到的only somewhat related question没有得到很好的回答。
答案 0 :(得分:4)
您应该可以使用meteor-desktop程序包来构建远程无头客户端。
https://www.npmjs.com/package/meteor-desktop#architecture
在Electron应用中,您的应用中会运行两个进程。 所谓的主要流程和渲染器流程。主要过程就是 在节点中执行的JS代码,渲染器是Chromium进程。在 此集成您的Meteor应用程序正在渲染器进程中运行 并且您的桌面特定代码在主进程中运行。他们是 通过IPC活动进行沟通。基本上,桌面方面 将其API发布为IPC事件监听器。在你的Meteor代码中, 称它为Desktop.send(' module',' event');。
这会给你:
答案 1 :(得分:1)
如果您希望将Meteor客户端用作无头客户端,并且由于客户端在浏览器中运行,我建议您使用无头浏览器,例如 PhantomJS ,它可以运行没有UI的Meteor代码,并且能够访问本地文件系统。
另一个选项,实际上并不是你所描述的,而是将javascript设为一切,是使用节点ddp
客户端,并将代码编写到可以在节点端轻松导入的模块中。
答案 2 :(得分:-1)
远程计算机上是否有定制的meteor客户端和自定义硬件?或者是C ++程序充当客户端?然后是服务器,除了你的其他客户端浏览器?
听起来你应该以不同的方式做一些事情:
设置具有自定义域和端口转发的动态DNS系统,以便您可以将特殊硬件远程系统用作服务器。
使用硬件在该远程计算机上运行Meteor服务器。
而不是说完DDP的完整C ++应用程序,只需创建一个Node.js C ++插件,它与硬件通信并在Meteor服务器代码中使用它。