MyTerminals / src /index.ts
clone3's picture
Upload 9 files
e732311 verified
raw
history blame contribute delete
909 Bytes
import http from "node:http";
import { WebSocketServer } from "ws";
import { spawn } from "node-pty";
import { createServer } from "./server";
const port = process.env.PORT || 5001;
const app = createServer();
const server = http.createServer(app);
const wss = new WebSocketServer({ server });
wss.on("connection", (ws) => {
const ptyProcess = spawn("bash", [], {
name: "xterm-color",
env: process.env,
});
ws.on("message", (message) => {
console.log(`received: ${message}`);
const data = JSON.parse(message.toString());
if (data.type === "command") {
ptyProcess.write(data.data);
}
});
ws.on("close", () => {
console.log("closed ws");
});
ptyProcess.onData((data) => {
const message = JSON.stringify({
type: "data",
data,
});
ws.send(message);
});
});
server.listen(port, () => {
console.log(`api running on ${port}`);
});