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