是否有可能从meteorbuild立一个无头的基于节点的客户端?

我正在使用Meteor应用程序控制远程机器(连接到投影机和其他硬件)的系统。 目前,我们正在使用用C ++编写的本地DDP客户端来完成这个任务,但这种方法并不像我想的那样灵活:

  • C ++和JavaScript之间有重复。
  • 升级很难,因为我们不能同时部署服务器和客户端,所以我们总是要考虑向后兼容性和sorting。

所以我正在用JavaScript重写C ++应用程序的Meteor部分。 我想在理想情况下,有一个我们的应用程序的特殊客户端(称之为headless server ,类似于serverclient ),其中:

  • 是从Meteor应用程序的其余部分构build而来的,所以我们可以重复使用与服务器和Web客户端相同的业务逻辑,
  • 在客户端机器上的Node.js中运行,以便可以访问操作系统
  • 不包含任何浏览器代码,但添加了一些特定的控制机器和与C ++应用程序通信的代码。

更好的办法是,如果这个客户端不包含任何实际的代码,而只是一段引导代码。 引导程序会从服务器上下载实际的应用程序代码,并在服务器更新时重新下载,与HTML客户端的情况相同。 这将使更新更容易,因为我们可以假设服务器和客户端总是运行相同的版本。

这样的事情存在吗? 如果不是,没有不合理的努力,我能接近多远? search“meteor无头客户端”和“meteor节点客户端”并不能帮助我,而我能find的唯一有点相关的问题就是没有得到很好的回答。

你应该可以通过使用meteor-desktop软件包来构build远程无头客户端来实现这个function。

https://www.npmjs.com/package/meteor-desktop#architecture

在电子应用程序中,有两个进程在您的应用程序中运行。 所谓的主进程和渲染进程。 主进程只是一个在节点中执行的JS代码,渲染器是一个Chromium进程。 在这个集成中,您的Meteor应用程序正在渲染器进程中运行,并且您的桌面特定的代码在主进程中运行。 他们通过IPC事件进行交stream。 基本上,桌面端将其API作为IPC事件监听器发布。 在你的Meteor代码中,调用它就像Desktop.send('module','event');一样简单。

这会给你:

  • 在这个(桌面)客户端访问
  • 热码推 (与节点模块周围的警告)
  • 提供Meteor.isDesktop来控制在浏览器上运行哪些代码与桌面客户端

如果您希望将Meteor客户端用作无头客户端,并且由于客户端在浏览器中运行,我build议您使用像PhantomJS这样的无头浏览器,它可以在没有UI的情况下运行Meteor代码,并且有能力访问本地文件系统。

另一种select,这不是真正的你所描述的,但会使一切的JavaScript,是使用节点的ddp客户端,并将您的代码模块,您可以轻松地在节点端导入。

在定制硬件的远程计算机上是否有常规的meteor客户端? 或者,作为客户端的C ++程序? 然后服务器,除了你的其他客户端浏览器?

听起来像你应该做一些不同的事情:

  • build立一个具有自定义域名和端口转发的dynamicDNS系统,这样你就可以使用特殊的硬件远程系统作为服务器。

  • 使用硬件在该远程计算机上运行Meteor服务器。

  • 而不是一个完整的C ++应用程序讲DDP,只是做一个Node.js C + +插件,与硬件谈话,并在Meteor服务器代码中使用。