File size: 1,624 Bytes
ff4613e 530bc68 971fc9c a402e5e 4ed4457 971fc9c ff4613e 971fc9c ff4613e 971fc9c ff4613e 5f0c253 8dd736d 5f0c253 530bc68 dd8c371 530bc68 dd8c371 a402e5e 530bc68 971fc9c ff4613e 971fc9c 4ed4457 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 |
const WebSocket = require('ws');
const { spawn } = require('child_process');
// Create a WebSocket server listening on port 7860
const wss = new WebSocket.Server({ port: 7860 });
// Event listener for new connections
wss.on('connection', (ws) => {
console.log('New client connected');
// Send a message to the client when they connect
ws.send('Welcome to the WebSocket server!');
// Event listener for messages from the client
ws.on('message', (message) => {
console.log(`Received message: ${message}`);
// Convert message (Buffer) to string
const command = message.toString();
// Split command into command and arguments
const [cmd, ...args] = command.split(' ');
// Spawn a child process to execute the command
const process = spawn(cmd, args, { shell: true });
// Send stdout data to the WebSocket client
process.stdout.on('data', (data) => {
ws.send(`stdout: ${data}`);
});
// Send stderr data to the WebSocket client
process.stderr.on('data', (data) => {
ws.send(`stderr: ${data}`);
});
// Handle process completion
process.on('close', (code) => {
ws.send(`Process exited with code ${code}`);
});
// Handle errors
process.on('error', (err) => {
ws.send(`Error: ${err.message}`);
});
});
// Event listener for client disconnects
ws.on('close', () => {
console.log('Client disconnected');
});
});
console.log('WebSocket server is running on ws://localhost:7860');
|