删除通过管道传输到Node.js中的套接字的现有内容

时间:2014-10-19 10:35:07

标签: javascript node.js sockets ansi-escape

我正在使用Node ansi.js来编写“Hello World!”到终端并稍后擦除它。

var net = require('net');
var ansi = require('ansi');

var cursor = ansi(process.stdout);
setInterval(function() {
  cursor.write("Hello World!");

  setTimeout(function() {
    cursor.horizontalAbsolute(0).eraseLine();
  }, 1000);
}, 2000);

此代码按预期工作。 “你好,世界!”被写入控制台并每两秒擦除一次。

我想通过虚拟终端连接复制此行为。我尝试使用以下代码:

net.createServer(function(socket) {
  var cursor = ansi(socket);
  setInterval(function() {
    cursor.write("Hello World!");

    setTimeout(function() {
      cursor.horizontalAbsolute(0).eraseLine();
    }, 1000);
  }, 2000);
}).listen(1337);

当我运行上面的脚本并在另一个终端窗口中运行telnet 127.0.0.1 1337时,第二个窗口收到“Hello World!”每两秒但它永远不会被删除。如何擦除已通过节点传送到套接字的数据?

更新: ansi.js没有发送转义码,因为socket.isTTY为false-y。设置选项{enabled:true}会覆盖此行为并修复此问题。

我打开这个问题,因为知道ansi.js默认情况下不会将转义字符发送到套接字是有用的。

0 个答案:

没有答案
相关问题