Nie wiem, czy jest za późno, ale udało mi się uruchomić program z przeglądarki, zaczynając od tego kodu, który działa tylko na Linuksie (ja używam ubuntu). Będziesz musiał uruchomić interaktywne programy z prefiksem stdbuf -o0.
var child = require('child_process');
var myREPL = child.spawn('bash');
process.stdin.pipe(myREPL.stdin);
myREPL.stdin.on("end", function() {
process.exit(0);
});
myREPL.stdout.on('data', function (data) {
console.log(data+'');
});
myREPL.stderr.on('data', function (data) {
console.log('stderr: ' + data);
});
następnie, aby pracować w przeglądarce trzeba tylko dodać socket.io
var myREPL = child.spawn(program);
myREPL.stdin.on("end", function() {
socket.emit('consoleProgramEnded');
});
myREPL.stdout.on('data', function (data) {
socket.emit('consoleWrite',data+'');
});
myREPL.stderr.on('data', function (data) {
socket.emit('consoleWrite',data+'');
});
socket.on('consoleRead',function(message){
console.log("Writing to console:"+message);
myREPL.stdin.write(message.replace("<br>","")+"\n");
});
Mam nadzieję, że pomoże.
czym problem? Jakieś komunikaty o błędach? –
tak, więc w przeglądarce process.stdin i process.stdout są niezdefiniowane, co ma sens, ponieważ przeglądarka nie obsługuje go. Ale nie jestem pewien jak to obejść – ssarangi