Я играл с REPL от Node. Я подумал, что было бы неплохо сделать его доступным через сокет, подключиться к нему через 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‹Enter›», я получаю 2. Но затем, когда я нажимаю «‹Стрелка вверх›‹Enter›», я получаю «...», как если бы REPL ждет, пока я закончу команду. Но на самом деле все, что я хочу сделать, это увидеть последнюю команду, которую я выполнил. Я знаю, что Telnet любит удерживать свой вывод до тех пор, пока не будет введен перевод строки, но есть ли способ избежать этого?
$ telnet localhost 6634
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
>1+1
2
>^[[A
...
EDIT: я также обнаружил эту проблему, которая может быть связана или не связана - Клавиши со стрелками превращаются в управляющие символы в Telnet
EDIT 2: Хммм... rlwrap
, кажется, решает большую часть моей проблемы:
$ rlwrap telnet localhost 6634
Единственное, что не работает, - это завершение табуляции локальных/глобальных переменных, без которых, я полагаю, я могу жить. Больше всего меня интересовала история команды. rlwrap
классно!