Lassen Sie mich dieses Präfix sagen, es ist keine gute Idee ist, dies zu tun.
Aber Sie können eine Shell spawnen und Web-Sockets oder XMLHttpRequests verwenden, um Tastendrucke auf den erzeugten Server-Prozess zu drücken. Hier ist ein funktionierendes Beispiel für eines, das unter Windows läuft. Leider bin ich nicht dazu gekommen, Ctrl + c einzubinden/herauszufinden. Aber Sie sollten das Wesentliche davon bekommen.
require("underscore");
var Server = {},
express = require("express"),
path = require("path"),
sys = require("sys"),
application_root = __dirname;
global.Server = Server;
Server.root = application_root;
global.app = express();
Server.setup = require("./lib/setup.js").setup({
//redis: require("./lib/redis-client").createClient(),
app: app,
//mongoose : require("mongoose"),
io : require("socket.io"),
express : express,
port: 1773,
paths : {
views : path.join(application_root,"app","views"),
root : path.join(application_root,"public"),
controllers : path.join(application_root,"app","controllers"),
models : path.join(application_root,"app","models")
}
});
var proc = require('child_process'),
cmd;
app.socket.on('connection', function(socket) {
if (!cmd) {
//console.log('spawning cmd');
cmd = proc.spawn('cmd');
//console.log(cmd?'CMD started':'CMD not started');
if (cmd.stdout) {
//console.log('stdout present');
cmd.stdout.on('data',function(data) {
if (data) {
//console.log("data: "+data);
socket.emit('cmd', ""+data);
}
});
}
if (cmd.stderr) {
cmd.stderr.on('data', function(data) {
//console.log('stderr present');
if (data) {
socket.emit('cmd', ""+data);
}
});
}
cmd.on('exit', function() {
//console.log('cmd exited');
socket.emit('cmd', '[CMD Shutdown]');
if (cmd) {
cmd.kill();
cmd = null;
}
});
}
socket.on('sendCmd', function(data) {
if (data && data.buffer) {
var kB = data.buffer.replace("\r","\n");
if (cmd && cmd.stdin) {
cmd.stdin.write(kB);
}
}
});
socket.on('disconnect', function() {
console.log('connection closed');
if (cmd) {
cmd.stdin.end(); //.kill();
if (cmd) {
cmd.kill();
cmd = null;
}
}
});
});
Bearbeiten: Eigentlich ist dies ein Teil eines Arbeitsbeispiels. Es fehlt die Clientseite, auf der Sie die Tastenanschläge erfassen und an den Server senden. Aber es sollte dir die allgemeine Idee geben.
durch AJAX-Anfrage ... versuchen, Firefox-Webconsole zu öffnen, und Sie können eine Reihe von AJAX-Anfragen sehen :-) – Hellgorithm