@@ -140,21 +140,22 @@ internal async Task HandleRequest(HttpContext context, CancellationToken cts = d
140140
141141 var path = context . Request . Path . Value ;
142142
143- if ( Routes . TryGetValue ( path , out var handler ) )
143+ if ( path != null && Routes . TryGetValue ( path , out var handler ) )
144144 {
145145 var webSocket = await context . WebSockets . AcceptWebSocketAsync ( ) ;
146146 await Task . Run ( async ( ) =>
147147 {
148+ IWebSocketClient client = null ! ;
149+ var webSocketManager = new WebSocketManager ( ) ;
148150 try
149151 {
150- var webSocketManager = new WebSocketManager ( ) ;
151- var client = new WebSocketClient ( context , webSocket , path ) ;
152+ client = new WebSocketClient ( context , webSocket , path ) ;
152153 Clients . Add ( client ) ;
153154
154155 await Task . Run ( async ( ) =>
155156 {
156157 if ( _webSocketConfig ? . OnOpenHandler != null )
157- await _webSocketConfig . OnOpenHandler ( new WebSocket ( webSocket , client , webSocketManager ) ! , context ) ;
158+ await _webSocketConfig . OnOpenHandler ( new WebSocket ( webSocket , client , webSocketManager ) , context ) ;
158159 } , cts ) ;
159160
160161 var buffer = new byte [ 1024 * 4 ] ;
@@ -179,18 +180,26 @@ await handler(
179180 catch ( Exception ex )
180181 {
181182 _logger . LogError ( message : "Error with handling request: " , exception : ex ) ;
183+ await Task . Run ( async ( ) =>
184+ {
185+ if ( _webSocketConfig ? . OnErrorHandler != null )
186+ await _webSocketConfig . OnErrorHandler ( ex , new WebSocket ( webSocket , client , webSocketManager ) , context ) ;
187+ } , cts ) ;
182188 }
183189
184190 } , cts ) ;
185191 }
186192 else
187193 {
188194 context . Response . StatusCode = 404 ;
195+ throw new KeyNotFoundException ( "Path not found" ) ;
189196 }
190197 }
191198 catch ( Exception ex )
192199 {
193200 _logger . LogError ( ex , $ "Error when handle request { context . Connection . Id } : ") ;
201+ if ( _webSocketConfig ! . OnConnectionErrorHandler != null )
202+ await _webSocketConfig . OnConnectionErrorHandler ( ex , context ) ;
194203 }
195204 }
196205}
0 commit comments