2016-04-14 77 views
0

我一直在尋找一段時間,但找不到答案。我找到了node.js終端仿真器,但沒有找到其他方法。vt100應用程序的Node.js/angular wrapper

我的客戶端在Linux機器上使用vt100應用程序。他沒有源代碼,但他需要應用程序。我認爲應用程序使用curses或c庫來在屏幕上移動。

他想要一個隱藏終端應用程序的基於html的包裝。

有沒有辦法讓node.js與應用程序通過有角度的Web界面發送節點的接收命令進行通信?

感謝您的幫助。

回答

1

簡短版本:技術上可行,實際上不可行。

回想一下,VT100是一組控制終端輸出的命令。 (最初是一個物理設備;現在通常是像XTerm這樣的終端仿真器應用程序。)這些命令都是相對較低的;一般而言,它們可以改變字符輸出的方式(例如,粗體和顏色),移動光標或滾動或擦除顯示器的部分。它還包含一些可用於繪製一些非常簡單的圖形的「繪圖箱」字符。

轉換是建立使用VT100到HTML的用戶界面,用戶界面將很難在多個層次上的應用程序:

  1. 您將需要推出「後端」 VT100應用程序的實例(例如使用pty.js),並保持其在後臺處於活動狀態,只要任何用戶在您的網站上有活動的會話即可。如果您的網站有很多用戶,這可能會導致許多應用程序一次打開!

  2. 您需要將VT100應用程序輸出的原始字符解釋爲VT100控制序列,以將其重組爲應用程序試圖在任何給定時刻顯示的「快照」。

  3. 您的應用程序需要將這些快照的內容解釋爲可以在網站上顯示的數據。根據VT100應用程序中的數據結構,這可能會要求您的應用程序自動執行某些操作(例如,滾動顯示屏)以收集在網站上顯示單個頁面所需的所有信息。

  4. 您的應用程序需要接受用戶對您網站的輸入並將其正確轉換爲VT100應用程序的輸入。根據應用程序和網站的組織方式,這可能最終要求它執行許多操作(例如,打開和瀏覽多個窗口和菜單,執行搜索,切換模式等)以滿足單個用戶請求。

除非現有的應用程序執行非常不尋常的任務,它很可能是適應現有的VT100應用到Web界面將比開發一個全新的網絡應用程序來替代它大大更多的工作。我強烈建議您與客戶一起提高這種可能性。


(A「作弊」的解決方案可能是使用圖書館一樣terminal.js簡單地包裹在網頁中現有的終端應用,而無需調整或解釋任何其內容不做的,但我覺得這不是什麼你想要的。)

+0

很好的答案...謝謝你!但假設只有一個人連接到這個應用程序,並且他們希望界面避免輸入錯誤(頻繁發生),那麼如何啓動實例並使用node.js連接到它? –

+0

@DaveKearney使用pty,例如[pty.js](https://www.npmjs.com/package/pty.js/)。但這很容易;使其在Web界面中顯示將很困難。 – duskwuff

+0

真棒!謝謝! –