@@ -29,6 +29,10 @@ export interface WebSocketHandlerConnection {
29
29
params : PathParams
30
30
}
31
31
32
+ export interface WebSocketResolutionContext {
33
+ baseUrl ?: string
34
+ }
35
+
32
36
export const kEmitter = Symbol ( 'kEmitter' )
33
37
export const kSender = Symbol ( 'kSender' )
34
38
const kStopPropagationPatched = Symbol ( 'kStopPropagationPatched' )
@@ -50,7 +54,10 @@ export class WebSocketHandler {
50
54
this . __kind = 'EventHandler'
51
55
}
52
56
53
- public parse ( args : { url : URL } ) : WebSocketHandlerParsedResult {
57
+ public parse ( args : {
58
+ url : URL
59
+ resolutionContext ?: WebSocketResolutionContext
60
+ } ) : WebSocketHandlerParsedResult {
54
61
const clientUrl = new URL ( args . url )
55
62
56
63
/**
@@ -60,7 +67,11 @@ export class WebSocketHandler {
60
67
*/
61
68
clientUrl . pathname = clientUrl . pathname . replace ( / ^ \/ s o c k e t .i o \/ / , '/' )
62
69
63
- const match = matchRequestUrl ( clientUrl , this . url )
70
+ const match = matchRequestUrl (
71
+ clientUrl ,
72
+ this . url ,
73
+ args . resolutionContext ?. baseUrl ,
74
+ )
64
75
65
76
return {
66
77
match,
@@ -76,9 +87,11 @@ export class WebSocketHandler {
76
87
77
88
public async run (
78
89
connection : Omit < WebSocketHandlerConnection , 'params' > ,
90
+ resolutionContext ?: WebSocketResolutionContext ,
79
91
) : Promise < boolean > {
80
92
const parsedResult = this . parse ( {
81
93
url : connection . client . url ,
94
+ resolutionContext,
82
95
} )
83
96
84
97
if ( ! this . predicate ( { url : connection . client . url , parsedResult } ) ) {
0 commit comments