2016-04-14 43 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

真棒!谢谢! –