1
+ var _ = require ( 'lodash' ) ;
1
2
var httpProxy = require ( 'http-proxy' ) ;
2
3
var configFactory = require ( './config-factory' ) ;
3
4
var handlers = require ( './handlers' ) ;
@@ -10,7 +11,8 @@ var getArrow = require('./logger').getArrow;
10
11
module . exports = HttpProxyMiddleware ;
11
12
12
13
function HttpProxyMiddleware ( context , opts ) {
13
- var isWsUpgradeListened = false ;
14
+ // https://github.com/chimurai/http-proxy-middleware/issues/57
15
+ var wsUpgradeDebounced = _ . debounce ( handleUpgrade ) ;
14
16
var config = configFactory . createConfig ( context , opts ) ;
15
17
var proxyOptions = config . options ;
16
18
@@ -28,10 +30,7 @@ function HttpProxyMiddleware(context, opts) {
28
30
29
31
// https://github.com/chimurai/http-proxy-middleware/issues/19
30
32
// expose function to upgrade externally
31
- middleware . upgrade = function ( req , socket , head ) {
32
- handleUpgrade ( req , socket , head ) ;
33
- isWsUpgradeListened = true ;
34
- } ;
33
+ middleware . upgrade = wsUpgradeDebounced ;
35
34
36
35
return middleware ;
37
36
@@ -52,13 +51,7 @@ function HttpProxyMiddleware(context, opts) {
52
51
}
53
52
54
53
function catchUpgradeRequest ( server ) {
55
- // make sure only 1 handle listens to server's upgrade request.
56
- if ( isWsUpgradeListened === true ) {
57
- return ;
58
- }
59
-
60
- server . on ( 'upgrade' , handleUpgrade ) ;
61
- isWsUpgradeListened = true ;
54
+ server . on ( 'upgrade' , wsUpgradeDebounced ) ;
62
55
}
63
56
64
57
function handleUpgrade ( req , socket , head ) {
0 commit comments