Success to execute and show output using Websocket

This commit is contained in:
wancat committed 2023-07-15 14:36:51 +08:00
1 parent f17c2a9ef5
commit 69ef435b77
3 files changed
+19 -21

No files matched your search

+1 -1
View File
@@ -14,7 +14,7 @@ socket.on('open', function open() {
})
socket.on('message', function incoming(data) {
console.log(`From server: ${data}`)
console.log(`${data}`)
})
socket.on('close', function close() {
+9 -19
View File
@@ -13,10 +13,11 @@ const containerOptions = {
StdinOnce: false,
}
async function createContainer() {
export async function createContainer() {
try {
const container = await engine.createContainer(containerOptions)
await container.start()
console.log(container.id)
return container
} catch (error) {
console.error(error)
@@ -24,23 +25,12 @@ async function createContainer() {
}
}
async function attachContainer() {
const container = await createContainer()
console.log(container.id)
export async function attachContainer(container) {
// Create an exec instance with bash shell
container.attach(
{
stream: true,
stdin: true,
stdout: true,
stderr: true,
ws: true,
},
(err, stream) => {
stream.pipe(process.stdout)
}
)
return container.attach({
stream: true,
stdin: true,
stdout: true,
stderr: true,
})
}
attachContainer()
+9 -1
View File
@@ -1,16 +1,24 @@
import express from 'express'
import http from 'http'
import { Server } from 'socket.io'
import { createContainer, attachContainer } from './docker.js'
const app = express()
const server = http.createServer(app)
const io = new Server(server)
io.on('connection', (socket) => {
io.on('connection', async (socket) => {
console.log('Connected to the client.')
const container = await createContainer()
const stream = await attachContainer(container)
stream.on('data', (chunk) => {
socket.send(chunk.toString())
})
socket.on('message', function incoming(message) {
console.log(`From client: ${message}`)
stream.write(message + '\n')
})
socket.on('close', () => {