fix: write echo start on starting

This commit is contained in:
Justin Lin committed 2025-05-05 19:55:40 +08:00
1 parent 156abc044a
commit 2f7845e63e
3 files changed
+38 -33

No files matched your search

+3 -3
View File
@@ -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({
+1 -3
View File
@@ -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
View File
@@ -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 {