我一直在使用Node的REPL进行实验。我认为通过套接字将其可用,通过Telnet/puTTY/任何方式连接并动态调试我的服务器会非常酷。
我使用了在这里找到的示例:http://nodejs.org/docs/latest/api/repl.html,基本上看起来像这样...
我使用了在这里找到的示例: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);
好的,太棒了!现在我可以使用Telnet连接到5001端口并与REPL交互。但是,我遇到了控制字符的问题(例如Tab、Ctrl+C、向上箭头、向下箭头等)。我该如何让它们工作?例如,如果我使用Telnet连接,键入"1+1<Enter>",我会得到2。但是,当我按"<Up Arrow><Enter>"时,我得到了"...",就像REPL正在等待我完成命令一样。但是,实际上,我只想看到我执行的最后一个命令。我知道Telnet喜欢保留其输出,直到输入换行符,但是否有任何方法可以避免这种情况呢?
$ telnet localhost 6634
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
>1+1
2
>^[[A
...
编辑: 我还发现了这个问题,可能与此相关 - Telnet中的箭头键变成控制字符
编辑2: 嗯...rlwrap
似乎解决了我的大部分问题:
$ rlwrap telnet localhost 6634
唯一不起作用的是本地/全局变量的选项卡完成,我想我可以没有它。我最关心的是命令历史记录。rlwrap
很棒!