@@ -57,7 +57,7 @@ export class WebSocketHandler {
5757 }
5858
5959 public parse ( args : {
60- url : URL
60+ url : string | URL
6161 resolutionContext ?: WebSocketResolutionContext
6262 } ) : WebSocketHandlerParsedResult {
6363 const clientUrl = new URL ( args . url )
@@ -90,22 +90,26 @@ export class WebSocketHandler {
9090 }
9191
9292 public predicate ( args : {
93- url : URL
93+ url : string | URL
9494 parsedResult : WebSocketHandlerParsedResult
9595 } ) : boolean {
9696 return args . parsedResult . match . matches
9797 }
9898
99+ public test (
100+ url : string | URL ,
101+ resolutionContext ?: WebSocketResolutionContext & { strict ?: boolean } ,
102+ ) : boolean {
103+ return this . #match( url , resolutionContext ) != null
104+ }
105+
99106 public async run (
100107 connection : WebSocketConnectionData ,
101108 resolutionContext ?: WebSocketResolutionContext ,
102109 ) : Promise < WebSocketHandlerConnection | null > {
103- const parsedResult = this . parse ( {
104- url : connection . client . url ,
105- resolutionContext,
106- } )
110+ const parsedResult = this . #match( connection . client . url , resolutionContext )
107111
108- if ( ! this . predicate ( { url : connection . client . url , parsedResult } ) ) {
112+ if ( parsedResult == null ) {
109113 return null
110114 }
111115
@@ -125,6 +129,31 @@ export class WebSocketHandler {
125129 return resolvedConnection
126130 }
127131
132+ #match(
133+ url : string | URL ,
134+ resolutionContext ?: WebSocketResolutionContext & { strict ?: boolean } ,
135+ ) : WebSocketHandlerParsedResult | null {
136+ const resolvedUrl = this . #resolveWebSocketUrl(
137+ url . toString ( ) ,
138+ resolutionContext ?. baseUrl ,
139+ )
140+ const parsedResult = this . parse ( {
141+ url : resolvedUrl ,
142+ resolutionContext,
143+ } )
144+
145+ if (
146+ this . predicate ( {
147+ url,
148+ parsedResult,
149+ } )
150+ ) {
151+ return parsedResult
152+ }
153+
154+ return null
155+ }
156+
128157 protected [ kConnect ] ( connection : WebSocketHandlerConnection ) : boolean {
129158 // Support `event.stopPropagation()` for various client/server events.
130159 connection . client . addEventListener (
0 commit comments