const WebSocket = require('ws'); | |
const os = require('os'); | |
const pty = require('node-pty'); | |
// Create WebSocket server | |
const wss = new WebSocket.Server({ port: 6060 }); | |
wss.on('connection', function connection(ws) { | |
// Determine the shell to use based on the OS | |
const shell = os.platform() === 'win32' ? 'powershell.exe' : 'bash'; | |
// Spawn a terminal instance | |
const ptyProcess = pty.spawn(shell, [], { | |
name: 'xterm-color', | |
env: process.env, | |
}); | |
// Send command to the terminal | |
ws.on('message', (command) => { | |
ptyProcess.write(command + '\n'); | |
}); | |
// Send terminal output to the WebSocket client | |
ptyProcess.on('data', function (data) { | |
ws.send(data); | |
}); | |
}); | |