2009-12-22 3 views
22

У нас есть несколько приложений стиля curses, которые мы хотели бы предоставить для доступа через браузерный интерфейс.Какой хороший эмулятор терминала на основе браузера?

У нас есть приложение от другого поставщика, который якобы предоставляет это на основе старой версии JTA (Java Telnet App), но этот апплет не обрабатывает такие вещи, как изменение размера, и имеет относительно плохую поддержку буферов прокрутки и копирования/вставки.

В этот день интерфейсов на основе Ajax мне любопытно, есть ли какие-либо хорошие бесплатные решения.

Благодаря этому веб-сайту я видел ссылки на веб-эмулятор терминала Reflection, , но это, вероятно, слишком дорого для наших нужд.

Некоторые из потенциальных кандидатов, которых я видел, включают

  1. anyterm
  2. ajaxterm

    Нет скроллингом бар

, но у меня не было шанса сделать подробная оценка.

ответ

7

Я использую Ajaxterm часто как удобный способ администрирования веб-сервера из любого места. Он работал хорошо для меня, пока я не перешел на Chrome в качестве основного браузера. Ajaxterm отлично работает с Firefox и IE8, но недоступен для Chrome, Safari и Opera.

Я обнаружил, что в Chrome, Safari и Opera многие специальные клавиши не передаются Ajaxterm, включая backspace, клавиши со стрелками, 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 основаны на демонстрациях, доступных на их сайте. Я не использовал его в гневе.

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.

+0

Кто использует iframe? : p Я должен сказать, что shellinabox помог мне лучше для моего случая использования, когда у меня были особые проблемы с символами в Windows XP и Chromium: см. http://askubuntu.com/questions/48515/is-there-a-secure-web- shell-for-my-server/220489 # 220489 – Dolanor

+0

Просто уточняйте: Gate One * * работает за прокси. Он просто не работает через * некоторые * прокси. Прокси-программное обеспечение, которое не обновлялось в возрастных перерывах, а также прокси SSL, которые скручиваются с соединением (что является проблемой безопасности). –

4

Я пробовал https://github.com/chjj/tty.js/ сегодня, и он хорошо работает, вы можете попробовать.

+0

Я не думаю, что у этого достаточно оборотов. Простота установки с использованием 'npm install -g' и работает очень хорошо. Очень популярный проект с открытым исходным кодом. –

+0

Приятная, но, похоже, пропавшая поддержка Unicode и, похоже, не позволяет вам повторно подключаться к работающим сеансам. https://github.com/liftoff/GateOne делает все это. – w00t