什么是一个很好的基于浏览器的终端模拟器?

时间:2009-12-22 08:01:37

标签: terminal webbrowser-control terminal-emulator

我们有几个curses样式的应用程序,我们希望通过基于浏览器的界面提供访问。

我们有来自其他供应商的应用程序,它表面上基于JTA (Java Telnet App)的旧版本提供此应用程序,但该applet不能处理调整大小等问题,并且对回滚缓冲区和副本的支持相对较差/粘贴。

在基于Ajax的界面的这一天,我很好奇是否有任何好的,免费的解决方案。

感谢这个网站,我看到了对Reflection的基于Web的终端模拟器的引用, 但这对我们的需求来说可能太贵了。

我见过的一些潜在候选人包括

  1. anyterm
  2. ajaxterm

    没有回滚栏

  3. 但我没有机会进行详细的评估。

3 个答案:

答案 0 :(得分:7)

我经常使用Ajaxterm作为从任何地方管理Web服务器的便捷方式。在我切换到Chrome作为主浏览器之前,它对我很有用。 Ajaxterm适用于Firefox和IE8,但在Chrome,Safari和Opera中无法使用。

我发现在Chrome,Safari和Opera上,许多“特殊”键都没有传递到Ajaxterm,包括退格键,箭头键,ctrl + c,ctrl + h,home,end等.Opera是更糟糕的是:当您按下shift键时,按键会被转换为^ P,因此您无法键入大写字母。这些东西对我来说都很明显;它们也可能是你的显示器。

Anyterm在我尝试的所有浏览器中都能正常工作,包括IE6。

要记住的其他事项:

  • Anyterm在运行时保持连接不断打开,并使用第二个连接进行按键。所有浏览器都限制与单个主机的并发连接数。 IE 7及更低版本具有两个并发连接的限制(根据HTTP规范的要求),因此Anyterm的单个实例可以在很多时候最大化与该主机的连接。但是,通过简单地为Anyterm使用单独的主机名,这很容易解决。
  • Ajaxterm轮询更新,因此不会持续打开连接。它使用相同的连接进行按键和屏幕更新。另一方面,屏幕并不总是尽快更新,每个屏幕更新的网络开销更大。
  • Ajaxterm一次更新整个屏幕,甚至更改单个字符。 Anyterm仅更新已更改的屏幕部分。有争议的是更快;无论如何,整个屏幕通常可以放在一个数据包中,Anyterm的方法在服务器端和客户端都有更大的处理开销。

注意:我对Ajaxterm的评论基于Ajaxterm 0.10。我没有试过0.11,显然包括'小补丁'。我对Anyterm的评论是基于他们网站上提供的演示。我实际上并没有愤怒地使用它。

答案 1 :(得分:5)

我今天尝试了https://github.com/chjj/tty.js/,效果很好,你可以尝试一下。

答案 2 :(得分:2)

想知道怎么没有人提到http://shellinabox.com。我评估了shellinabox& ajaxterm。 Shellinabox比ajaxterm更快(我不知道内部细节)。此外,shellinabox可以登录用户而无需向用户提供明确的ssh访问权限(不确定它是否是一个很好的加分)。

Shellinabox虽然在iframe中运行有问题。但是如果你想独立运行一些东西来访问你的服务器,那么猜测shellinabox是最好的选择。


我一直在运行Rails Tutorial网站。我最终部署了Gateone - https://github.com/liftoff/GateOne,但它在浏览器+操作系统组合方面存在很多问题。最后我们创建了自己的伪终端(它不支持vim等)。检查https://github.com/pocha/terminal-codelearn