File tree Expand file tree Collapse file tree 1 file changed +10
-4
lines changed
packages/rsocket-router/src/router/transport Expand file tree Collapse file tree 1 file changed +10
-4
lines changed Original file line number Diff line number Diff line change @@ -62,7 +62,11 @@ export class WebsocketDuplexConnection extends Deferred implements DuplexConnect
62
62
return ;
63
63
}
64
64
65
- this . websocketDuplex . removeAllListeners ( ) ;
65
+ // Important: do not remove the error handler here.
66
+ // That causes uncaught error handlers in some edge cases.
67
+ this . websocketDuplex . removeAllListeners ( 'close' ) ;
68
+ this . websocketDuplex . removeAllListeners ( 'data' ) ;
69
+
66
70
this . websocketDuplex . end ( ) ;
67
71
68
72
super . close ( error ) ;
@@ -88,13 +92,15 @@ export class WebsocketDuplexConnection extends Deferred implements DuplexConnect
88
92
}
89
93
}
90
94
91
- private handleClosed = ( e : WebSocket . CloseEvent ) : void => {
92
- this . close ( new Error ( e . reason || 'WebsocketDuplexConnection: Socket closed unexpectedly.' ) ) ;
95
+ private handleClosed = ( e ? : WebSocket . CloseEvent ) : void => {
96
+ this . close ( new Error ( e ? .reason || 'WebsocketDuplexConnection: Socket closed unexpectedly.' ) ) ;
93
97
} ;
94
98
95
99
private handleError = ( e : WebSocket . ErrorEvent ) : void => {
96
100
logger . error ( `Error in WebSocket duplex connection: ${ e } ` ) ;
97
- this . close ( e . error ) ;
101
+ if ( ! this . done ) {
102
+ this . close ( e . error ) ;
103
+ }
98
104
} ;
99
105
100
106
private handleMessage = ( buffer : Buffer ) : void => {
You can’t perform that action at this time.
0 commit comments