start multi terminal logic

This commit is contained in:
Ishaan Dey
2024-05-06 23:34:45 -07:00
parent 4e42555887
commit 91feeffc5a
5 changed files with 139 additions and 39 deletions

View File

@ -222,7 +222,7 @@ io.on("connection", async (socket) => {
}
})
socket.on("createTerminal", ({ id }: { id: string }) => {
socket.on("createTerminal", (id: string, callback) => {
console.log("creating terminal", id)
if (terminals[id]) {
console.log("Terminal already exists.")
@ -243,6 +243,7 @@ io.on("connection", async (socket) => {
console.log("ondata")
socket.emit("terminalResponse", {
// data: Buffer.from(data, "utf-8").toString("base64"),
id,
data,
})
})
@ -256,6 +257,8 @@ io.on("connection", async (socket) => {
onData,
onExit,
}
callback(true)
})
socket.on("terminalData", (id: string, data: string) => {
@ -271,6 +274,19 @@ io.on("connection", async (socket) => {
}
})
socket.on("closeTerminal", (id: string, callback) => {
if (!terminals[id]) {
console.log("tried to close, but term does not exist. terminals", terminals)
return
}
terminals[id].onData.dispose()
terminals[id].onExit.dispose()
delete terminals[id]
callback(true)
})
socket.on(
"generateCode",
async (
@ -311,10 +327,9 @@ io.on("connection", async (socket) => {
if (data.isOwner) {
Object.entries(terminals).forEach((t) => {
const { terminal, onData, onExit } = t[1]
if (os.platform() !== "win32") terminal.kill()
onData.dispose()
onExit.dispose()
delete terminals[t[0]]
onData.dispose()
onExit.dispose()
delete terminals[t[0]]
})
// console.log("The owner disconnected.")