2012-09-26 49 views
4

那么,我们都知道无头服务器。实际上,绝大多数服务器都是无头。节点服务器GUI前端

像往常一样(看来),我的情况要求非常别的。基本上,所提出的架构看起来或多或少像:

RTG SA

该应用程序服务器(的node.js)位于物理上连接到两个屏幕在物理机上。

在这台机器和'网络之间有各种常规的网络层。请记住,此设置的主要原因之一是物理可移植性:即客户端获得必要的硬件作为产品。服务器本身依靠CDN来处理静态文件等。

每个监视器/屏幕需要显示不同的东西,由同一个节点服务器产生。

现在这个服务器可能会在Windows上运行,但是给出一个概念(这是我的问题之后),我可以更改代码以在目标平台上运行。那么,根据我的代码,这甚至可以自动完成。

所以,我的实际问题。节点是非常灵活的,它可以由任何东西运行 - 甚至是定制的软件(C++,Delphi,甚至是GM)。只需shell_exec('node server.js'),我们关闭了。

但是屏幕本身需要相当动态。所以节点需要以某种方式影响两个屏幕。有几个选项我考虑:

  • 它创建两个可调整大小,带有嵌入式铬浏览器无特色窗口由节点服务器在某种程度上控制(节点与这些浏览器的反应如何?)
  • A A自定义应用程序定制应用程序,根据节点CLI输出更新两个屏幕的UI。由于我需要用户界面华丽的东西,这个应用程序将创建像GameMaker或类似的引擎。

PS:以防万一你问;与网络1(例如,基于web的GUI前端)相反的物理连接是,通过设计

回答

6

我只是将结果/监视屏幕连接为常规HTML页面。在您的Node应用程序中,创建第二个HTTP服务器(在非标准端口上,由公众防火墙)提供监视页面。

使用socket.io将实时数据发送到监控页面,这可以使一切看起来很漂亮。在Chrome的全屏幕实例中启动它。

此方法完全将您从任何类型的平台依赖关系中解放出来,并将监视应用程序从服务器应用程序中分离出来。如果有必要,它可以让您在独立的盒子上运行监控应用程序。

+0

那么,正如我已经说过的那样,由于两个屏幕已经连接到机器上,因此通过混淆应用程序逻辑而不是混淆输出来“复杂化”事情是没有意义的。虽然我确定你的方法是最明智的方法。 – Christian

+0

虽然你不会惹恼应用程序逻辑,但你可以为监视的东西创建一个完全独立的HTTP服务器,并将输出发送到该服务器上的socket.io。 – josh3736

+0

那么,根据我的理解,不同端口上的HTTP服务器(因为80和443将被使用)并不是HTTP服务器的大部分....但是再次,没有人需要输入我们的自定义端口。 – Christian