Node.js:带控制序列的远程shell

我正在尝试使用Node.js编写远程shell。 这是我现在所得到的:

客户

var net = require('net'); var client = net.connect({port: 1234}, function(){ process.stdin.pipe(client); client.pipe(process.stdout); }); 

服务器

 var net = require('net'), spawn = require('child_process').spawn; var server = net.createServer(function(socket){ var sh = spawn('/bin/sh'); sh.stdout.pipe(socket); sh.stderr.pipe(socket); socket.pipe(sh.stdin); }); server.listen(1234); 

它用简单的命令工作得很好,但是当我启动emacs或nano时,并不是因为控制序列没有被发送。 我想让它performance得像ssh一样。 这样的事情可能吗? 也许使用process.stdin.setRawMode(true)?

谢谢

我find了我正在寻找的东西。 这就是所谓的pty.js.

服务器端:

 var net = require('net'); var pty = require('pty.js'); var server = net.createServer(); server.on('connection', function(socket){ var term = pty.spawn('bash', [], { name: 'xterm-color', cols: 80, rows: 40, cwd: process.env.HOME, env: process.env }); socket.pipe(term); term.pipe(socket); }); server.listen(1234); 

客户端:

 var net = require('net'); var client = net.connect(1234); client.on('connect', function(){ process.stdin.setRawMode(true); process.stdin.pipe(client); client.pipe(process.stdout); }); client.on('end', function(){ console.log('[Connection closed by peer]'); process.stdin.setRawMode(false); process.exit(); }); 

目前仅适用于节点v0.10.x。