mirror of
https://github.com/linux-odyssey/linux-odyssey.git
synced 2026-11-07 19:10:12 +08:00
fix: write echo start on starting
This commit is contained in:
1 parent
156abc044a
commit
2f7845e63e
3 files changed
+38
-33
No files matched your search
@@ -53,10 +53,10 @@ const useSession = defineStore('session', {
|
|||||||
containerName: session.containerName || '',
|
containerName: session.containerName || '',
|
||||||
}
|
}
|
||||||
term.reset()
|
term.reset()
|
||||||
term.connect(
|
await socket.connect(this.session)
|
||||||
|
await term.connect(
|
||||||
`/terminal/${session.containerName}/ws?token=${session.token}`
|
`/terminal/${session.containerName}/ws?token=${session.token}`
|
||||||
)
|
)
|
||||||
await socket.connect(this.session)
|
|
||||||
term.focus()
|
term.focus()
|
||||||
},
|
},
|
||||||
async createSession() {
|
async createSession() {
|
||||||
@@ -64,7 +64,7 @@ const useSession = defineStore('session', {
|
|||||||
questId: this.questId,
|
questId: this.questId,
|
||||||
})
|
})
|
||||||
await this.setSession(session)
|
await this.setSession(session)
|
||||||
socket.emit('terminal', 'echo start\n')
|
term.send('echo start\n')
|
||||||
},
|
},
|
||||||
async getActiveSession() {
|
async getActiveSession() {
|
||||||
const session = await trpc.session.getActiveSession.query({
|
const session = await trpc.session.getActiveSession.query({
|
||||||
|
|||||||
@@ -23,11 +23,9 @@ class SocketWrapper {
|
|||||||
|
|
||||||
this.socket.on('connect', () => {
|
this.socket.on('connect', () => {
|
||||||
console.log('Socket connected to session', session._id)
|
console.log('Socket connected to session', session._id)
|
||||||
})
|
|
||||||
|
|
||||||
this.socket.once('terminal', () => {
|
|
||||||
resolve()
|
resolve()
|
||||||
})
|
})
|
||||||
|
|
||||||
this.socket.on('connect_error', reject)
|
this.socket.on('connect_error', reject)
|
||||||
this.bindListeners()
|
this.bindListeners()
|
||||||
})
|
})
|
||||||
|
|||||||
+34
-27
@@ -28,33 +28,38 @@ class SocketTerminal {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
connect(url: string): void {
|
connect(url: string): Promise<void> {
|
||||||
console.log('Connecting to terminal', url)
|
return new Promise((resolve, reject) => {
|
||||||
this.socket = new ReconnectingWebSocket(url)
|
console.log('Connecting to terminal', url)
|
||||||
this.socket.onopen = () => {
|
this.socket = new ReconnectingWebSocket(url)
|
||||||
console.log('Connected to terminal')
|
this.socket.onopen = () => {
|
||||||
this.term.write('\r\n\x1B[1;32mConnected to terminal\x1B[0m\r\n')
|
console.log('Connected to terminal')
|
||||||
}
|
this.term.write('\r\n\x1B[1;32mConnected to terminal\x1B[0m\r\n')
|
||||||
|
resolve()
|
||||||
|
}
|
||||||
|
|
||||||
this.socket.onclose = () => {
|
this.socket.onclose = () => {
|
||||||
console.log('Disconnected from terminal')
|
console.log('Disconnected from terminal')
|
||||||
this.term.write('\r\n\x1B[1;31mDisconnected from terminal\x1B[0m\r\n')
|
this.term.write('\r\n\x1B[1;31mDisconnected from terminal\x1B[0m\r\n')
|
||||||
}
|
reject(new Error('Disconnected from terminal'))
|
||||||
|
}
|
||||||
|
|
||||||
this.socket.onerror = (error) => {
|
this.socket.onerror = (error) => {
|
||||||
console.error('WebSocket error:', error)
|
console.error('WebSocket error:', error)
|
||||||
this.term.write(
|
this.term.write(
|
||||||
`\r\n\x1B[1;31mWebSocket error: ${'message' in error ? error.message : ''}\x1B[0m\r\n`
|
`\r\n\x1B[1;31mWebSocket error: ${'message' in error ? error.message : ''}\x1B[0m\r\n`
|
||||||
)
|
)
|
||||||
}
|
reject(error)
|
||||||
this.socket.onmessage = (event) => {
|
}
|
||||||
console.log('Received message from terminal')
|
this.socket.onmessage = (event) => {
|
||||||
const data =
|
console.log('Received message from terminal')
|
||||||
typeof event.data === 'string'
|
const data =
|
||||||
? event.data
|
typeof event.data === 'string'
|
||||||
: new TextDecoder().decode(event.data)
|
? event.data
|
||||||
this.term.write(data)
|
: new TextDecoder().decode(event.data)
|
||||||
}
|
this.term.write(data)
|
||||||
|
}
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
resizeScreen(): void {
|
resizeScreen(): void {
|
||||||
@@ -70,8 +75,10 @@ class SocketTerminal {
|
|||||||
this.resizeScreen()
|
this.resizeScreen()
|
||||||
}
|
}
|
||||||
|
|
||||||
write(message: string): void {
|
send(message: string): void {
|
||||||
this.term.write(message)
|
if (this.socket) {
|
||||||
|
this.socket.send(message)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
focus(): void {
|
focus(): void {
|
||||||
|
|||||||
Reference in new issue
Block a user