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

Tho*_*mas 13 node.js meteor

我正在开发一个系统,通过Meteor应用程序控制远程机器(连接到投影仪和其他一些硬件).目前,我们正在使用用C++编写的本土DDP客户端来实现这一目标,但这种方法并不像我想的那样灵活:

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

所以我想要用JavaScript重写C++应用程序的Meteor部分.理想情况下,我希望有一个特殊的客户端(称之为headless,类似于serverclient):

  • 与Meteor应用程序的其余部分构建在同一个源中,因此我们可以重用与服务器和Web客户端相同的业务逻辑,
  • 在客户端计算机上的Node.js中运行,以便它可以访问操作系统,并且
  • 不包含任何浏览器代码,但添加了一些特定于控制机器和与C++应用程序通信的其他代码.

如果这个客户端不包含任何实际代码,只是一段引导代码,那就更好了.引导程序将从服务器下载实际的应用程序代码,并在更新服务器时重新下载它,其方式与HTML客户端相同.这会使更新变得更容易,因为我们可以假设服务器和客户端始终运行相同的版本.

这样的事情存在吗?如果没有,如果没有不合理的努力,我能有多接近?搜索"流星无头客户端"和"流星节点客户端"对我没有帮助,我能找到的唯一有点相关的问题没有得到很好的解答.

小智 4

您应该能够通过使用meteor-desktop包构建远程无头客户端来使其工作。

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

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

这会给你:

  • 此(桌面)客户端上的操作系统访问
  • 热代码推送(关于节点模块的警告)
  • 提供Meteor.isDesktop来控制哪些代码在浏览器上运行,哪些代码在桌面客户端上运行