@@ -8,6 +8,7 @@ const defaultProxyHandler = (req, res, url, proxy, proxyOpts) => proxy(req, res,
8
8
const DEFAULT_METHODS = require ( 'restana/libs/methods' ) . filter ( method => method !== 'all' )
9
9
const send = require ( '@polka/send-type' )
10
10
const PROXY_TYPES = [ 'http' , 'lambda' ]
11
+ const registerWebSocketRoutes = require ( './lib/ws-proxy' )
11
12
12
13
const gateway = ( opts ) => {
13
14
const proxyFactory = opts . proxyFactory || defaultProxyFactory
@@ -17,24 +18,30 @@ const gateway = (opts) => {
17
18
pathRegex : '/*'
18
19
} , opts )
19
20
20
- const server = opts . server || restana ( opts . restana )
21
+ const router = opts . server || restana ( opts . restana )
21
22
22
23
// registering global middlewares
23
24
opts . middlewares . forEach ( middleware => {
24
- server . use ( middleware )
25
+ router . use ( middleware )
25
26
} )
26
27
27
28
// registering services.json
28
29
const services = opts . routes . map ( route => ( {
29
30
prefix : route . prefix ,
30
31
docs : route . docs
31
32
} ) )
32
- server . get ( '/services.json' , ( req , res ) => {
33
+ router . get ( '/services.json' , ( req , res ) => {
33
34
send ( res , 200 , services )
34
35
} )
35
36
36
- // processing routes
37
- opts . routes . forEach ( route => {
37
+ // processing websocket routes
38
+ registerWebSocketRoutes ( {
39
+ routes : opts . routes . filter ( route => route . proxyType === 'websocket' ) ,
40
+ server : router . getServer ( )
41
+ } )
42
+
43
+ // processing non-websocket routes
44
+ opts . routes . filter ( route => route . proxyType !== 'websocket' ) . forEach ( route => {
38
45
if ( undefined === route . prefixRewrite ) {
39
46
route . prefixRewrite = ''
40
47
}
@@ -82,13 +89,13 @@ const gateway = (opts) => {
82
89
83
90
methods . forEach ( method => {
84
91
method = method . toLowerCase ( )
85
- if ( server [ method ] ) {
86
- server [ method ] . apply ( server , args )
92
+ if ( router [ method ] ) {
93
+ router [ method ] . apply ( router , args )
87
94
}
88
95
} )
89
96
} )
90
97
91
- return server
98
+ return router
92
99
}
93
100
94
101
const handler = ( route , proxy , proxyHandler ) => async ( req , res , next ) => {
0 commit comments