Skip to content

Commit 53fe79b

Browse files
committed
fix(websocket): fixes websocket upgrade issue (chimurai#82)
1 parent 9e542fa commit 53fe79b

File tree

1 file changed

+5
-12
lines changed

1 file changed

+5
-12
lines changed

lib/index.js

Lines changed: 5 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
var _ = require('lodash');
12
var httpProxy = require('http-proxy');
23
var configFactory = require('./config-factory');
34
var handlers = require('./handlers');
@@ -10,7 +11,8 @@ var getArrow = require('./logger').getArrow;
1011
module.exports = HttpProxyMiddleware;
1112

1213
function HttpProxyMiddleware(context, opts) {
13-
var isWsUpgradeListened = false;
14+
// https://github.com/chimurai/http-proxy-middleware/issues/57
15+
var wsUpgradeDebounced = _.debounce(handleUpgrade);
1416
var config = configFactory.createConfig(context, opts);
1517
var proxyOptions = config.options;
1618

@@ -28,10 +30,7 @@ function HttpProxyMiddleware(context, opts) {
2830

2931
// https://github.com/chimurai/http-proxy-middleware/issues/19
3032
// 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;
3534

3635
return middleware;
3736

@@ -52,13 +51,7 @@ function HttpProxyMiddleware(context, opts) {
5251
}
5352

5453
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);
6255
}
6356

6457
function handleUpgrade(req, socket, head) {

0 commit comments

Comments
 (0)