我找了好久没找到答案。我找到了 node.js 终端模拟器,但没有找到相反的方式。
我的客户在 Linux 机器上使用 vt100 应用程序。他没有源代码,但他需要应用程序。我认为该应用程序使用curses 或一些c 库在屏幕上移动。
他想要一个基于 html 的包装器来隐藏终端应用程序。
有没有办法让node.js与应用程序通信,通过 Angular 网络界面从 Node 发送接收命令?
感谢您的帮助。
最佳答案
简短版本:技术上可行,实际上不可行。
回想一下,VT100 是一组用于控制终端输出的命令。 (最初是物理设备;现在通常是终端仿真器应用程序,如 XTerm。)这些命令都是相对较低级别的;一般来说,它们可以改变字符的输出方式(例如粗体和颜色)、移动光标、滚动或删除显示的部分内容。它还包括一些“画框”字符,可以输出这些字符来绘制一些非常简单的图形。
将使用 VT100 构建用户界面的应用程序转换为 HTML 用户界面在多个层面上都是困难的:
您将需要启动“后端”VT100 应用程序的实例(例如,使用 pty.js )并在任何用户在您的网络上有事件 session 时使其在后台保持事件状态地点。如果您的网站有很多用户,这可能会导致同时打开多个应用程序实例!
您需要将 VT100 应用程序输出的原始字符解释为 VT100 控制序列,以将其重新组装成应用程序在任何给定时刻尝试显示的内容的“快照”。
<您的应用程序需要将这些快照的内容解释为可以在网站上显示的数据。根据 VT100 应用程序中数据的结构方式,这可能需要您的应用程序自动执行某些操作(例如,滚动显示)以收集在网站上显示单个页面所需的所有信息。
您的应用程序需要接受用户对您网站的输入,并将其适本地转换为 VT100 应用程序的输入。根据应用程序和网站的组织方式,这可能最终需要它执行许多操作(例如,打开和导航多个窗口和菜单、执行搜索、切换模式等)以满足单个用户请求。
除非现有应用程序执行极其不寻常的任务,否则将现有 VT100 应用程序改编为 Web 界面很可能比开发完整的应用程序大大需要更多工作。新的网络应用程序来取代它。我强烈建议您向您的客户提出这种可能性。
<小时/>(“作弊”解决方案可能是使用像 terminal.js 这样的库来简单地将现有终端应用程序包装在网页中,而不调整或解释其任何内容。但我怀疑这不是您想要的.)
关于javascript - vt100 应用程序的 Node.js/Angular 包装器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36612149/