我一直在寻找一段时间,我找不到答案。我找到了 node.js 终端模拟器,但不是相反。
我的客户在 linux 机器上使用 vt100 应用程序。他没有源代码,但他需要应用程序。我认为该应用程序使用curses 或一些c 库来在屏幕上移动。
他想要一个隐藏终端应用程序的基于 html 的包装器。
有没有办法让 node.js 与应用程序通信,从带有角度 Web 界面的节点发送接收命令?
谢谢你的帮助。
我一直在寻找一段时间,我找不到答案。我找到了 node.js 终端模拟器,但不是相反。
我的客户在 linux 机器上使用 vt100 应用程序。他没有源代码,但他需要应用程序。我认为该应用程序使用curses 或一些c 库来在屏幕上移动。
他想要一个隐藏终端应用程序的基于 html 的包装器。
有没有办法让 node.js 与应用程序通信,从带有角度 Web 界面的节点发送接收命令?
谢谢你的帮助。
短版:技术上可行,实际上不可行。
回想一下,VT100 是一组用于控制终端输出的命令。(最初是物理设备;现在通常是 XTerm 之类的终端仿真器应用程序。)这些命令都是相对低级的;一般而言,它们可以改变字符的输出方式(例如,粗体和颜色)、移动光标、滚动或擦除部分显示内容。它还包括一些“画框”字符,可以输出这些字符来绘制一些非常简单的图形。
将使用 VT100 构建用户界面的应用程序转换为 HTML 用户界面在多个层面上都是困难的:
您将需要启动“后端”VT100 应用程序的一个实例(例如,使用pty.js)并在任何用户在您的网站上进行活动会话期间保持其在后台活动。如果您的网站有很多用户,这可能会转化为一次打开多个应用程序实例!
您需要将 VT100 应用程序输出的原始字符解释为 VT100 控制序列,以将其重新组合成应用程序在任何给定时刻试图显示的内容的“快照”。
您的应用程序需要将这些快照的内容解释为准备在网站上显示的数据。根据 VT100 应用程序中数据的结构方式,这可能需要您的应用程序自动执行某些操作(例如,滚动显示)以收集在网站上显示单个页面所需的所有信息。
您的应用程序需要接受用户对您网站的输入并将其适当地转换为 VT100 应用程序的输入。根据应用程序和网站的组织方式,最终可能需要它执行许多操作(例如,打开和导航多个窗口和菜单、执行搜索、切换模式等)以满足单个用户请求。
除非现有应用程序执行极其不寻常的任务,否则将现有的 VT100 应用程序调整为 Web 界面很可能比开发全新的 Web 应用程序来替代它要多得多的工作。我强烈建议您向您的客户提出这种可能性。
(“作弊”解决方案可能是使用诸如terminal.js之类的库来简单地将现有终端应用程序包装在网页中,而无需调整或解释其任何内容。但我怀疑这不是您想要的。)