2012-09-26 50 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