Skip to content
This repository was archived by the owner on Jul 30, 2025. It is now read-only.

Commit 9d4441c

Browse files
committed
fix(plugins/plugin-bash-like): improve error handling of proxy
Fixes #6608
1 parent 035c320 commit 9d4441c

File tree

1 file changed

+39
-27
lines changed

1 file changed

+39
-27
lines changed

plugins/plugin-bash-like/src/pty/websocket-channel.ts

Lines changed: 39 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -41,8 +41,12 @@ class WebSocketChannel implements Channel {
4141

4242
/** Forcibly close the channel */
4343
close() {
44-
debug('closing websocket channel')
45-
this.ws.close()
44+
try {
45+
debug('closing websocket channel')
46+
this.ws.close()
47+
} catch (err) {
48+
console.error('Error in WebSocketChannel.close', err)
49+
}
4650
}
4751

4852
send(msg: string) {
@@ -55,7 +59,7 @@ class WebSocketChannel implements Channel {
5559
try {
5660
return this.ws.send(JSON.stringify(withUser))
5761
} catch (err) {
58-
console.error('Error from WebSocketChannel:', err)
62+
console.error('Error in WebSocketChannel.send', err)
5963
}
6064
}
6165

@@ -65,34 +69,42 @@ class WebSocketChannel implements Channel {
6569

6670
// eslint-disable-next-line @typescript-eslint/no-explicit-any
6771
removeEventListener(eventType: string, handler: any) {
68-
this.ws.removeEventListener(eventType, handler)
72+
try {
73+
this.ws.removeEventListener(eventType, handler)
74+
} catch (err) {
75+
console.error('Error in WebSocketChannel.removeEventListener', err)
76+
}
6977
}
7078

7179
// eslint-disable-next-line @typescript-eslint/no-explicit-any
7280
on(eventType: string, handler: any) {
73-
switch (eventType) {
74-
// new Kui browser client
75-
case 'open':
76-
debug('WebSocketChannel: installing onopen handler')
77-
this.ws.addEventListener(eventType, handler)
78-
break
79-
80-
// message from Kui browser client
81-
case 'message':
82-
debug('WebSocketChannel: installing onmessage handler')
83-
// this.onmessage = message => handler(message.data)
84-
this.ws.addEventListener(eventType, handler)
85-
break
86-
87-
case 'error':
88-
debug('WebSocketChannel: installing onerror handler')
89-
this.ws.addEventListener(eventType, handler)
90-
break
91-
92-
case 'close':
93-
debug('WebSocketChannel: installing onclose handler')
94-
this.ws.addEventListener(eventType, handler)
95-
break
81+
try {
82+
switch (eventType) {
83+
// new Kui browser client
84+
case 'open':
85+
debug('WebSocketChannel: installing onopen handler')
86+
this.ws.addEventListener(eventType, handler)
87+
break
88+
89+
// message from Kui browser client
90+
case 'message':
91+
debug('WebSocketChannel: installing onmessage handler')
92+
// this.onmessage = message => handler(message.data)
93+
this.ws.addEventListener(eventType, handler)
94+
break
95+
96+
case 'error':
97+
debug('WebSocketChannel: installing onerror handler')
98+
this.ws.addEventListener(eventType, handler)
99+
break
100+
101+
case 'close':
102+
debug('WebSocketChannel: installing onclose handler')
103+
this.ws.addEventListener(eventType, handler)
104+
break
105+
}
106+
} catch (err) {
107+
console.error('Error in WebSocketChannel.on', err)
96108
}
97109
}
98110
}

0 commit comments

Comments
 (0)