Узел JS REPL, сокеты и Telnet - завершение табуляции, клавиши со стрелками и т. Д. - PullRequest
3 голосов
/ 28 декабря 2011

Я играл с REPL Node.Я подумал, что было бы неплохо сделать его доступным через Socket, подключиться к нему через Telnet / puTTY / что угодно и отладить мой сервер на лету.

Я использовал пример, найденный здесь: http://nodejs.org/docs/latest/api/repl.html,, который в основном выглядит так ...

net.createServer(function (socket) {
  var cmd = repl.start(">", socket);
  //... some other stuff here.... not important
}).listen(5001);

ОК, отлично!Теперь я могу подключиться к порту 5001 через Telnet и взаимодействовать с REPL.Но у меня возникают проблемы с управляющими символами (например, Tab, Ctrl + C, стрелка вверх, стрелка вниз и т. Д.).Как я могу заставить их работать?Например, если я подключаюсь с помощью telnet, введите «1 + 1 », я получу 2. Но тогда, когда я нажму " ", я получаю" ... ", как будто REPL ждет, когда я закончу команду. Но, на самом деле, все, что я хочу сделать, это посмотреть последнюю команду, которую я выполнил. Я знаю, что Telnet любит удерживатьна его вывод, пока не будет введен перевод строки, но есть ли способ избежать этого?

$ telnet localhost 6634
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
>1+1
2
>^[[A
...

EDIT : я также обнаружил эту проблему, которая может или не можетбыть связанным - клавиши со стрелками превращаются в управляющие символы в Telnet

РЕДАКТИРОВАТЬ 2 : Хммм ... rlwrap, кажется, решает большинство моих проблем:

$ rlwrap telnet localhost 6634

Единственное, что не работает, - это табулирование локальных / глобальных переменных, без которых, я полагаю, я могу жить. Больше всего меня интересовала история команд. rlwrap аккуратно!

1 Ответ

1 голос
/ 30 мая 2012

См. Выше.

rlwrap telnet localhost 6634

...