diff --git a/.gitignore b/.gitignore index 64e3c3aea..753421d72 100644 --- a/.gitignore +++ b/.gitignore @@ -2,3 +2,4 @@ node_modules/ npm-debug.log* .dir-locals.el .DS_Store +.idea/ diff --git a/lib/http-server.js b/lib/http-server.js index 8bafdf8e9..e9d51447f 100644 --- a/lib/http-server.js +++ b/lib/http-server.js @@ -163,12 +163,12 @@ function HttpServer(options) { })); if (typeof options.proxy === 'string') { - var proxy = httpProxy.createProxyServer({}); + var proxy = httpProxy.createProxyServer({ + target: options.proxy, + changeOrigin: true + }); before.push(function (req, res) { - proxy.web(req, res, { - target: options.proxy, - changeOrigin: true - }, function (err, req, res, target) { + proxy.web(req, res, {}, function (err, req, res, target) { if (options.logFn) { options.logFn(req, res, { message: err.message, @@ -199,6 +199,12 @@ function HttpServer(options) { if (options.timeout !== undefined) { this.server.setTimeout(options.timeout); } + + if (typeof options.proxy === 'string') { + this.server.on('upgrade', function (request, socket, head) { + proxy.ws(request, socket, head); + }); + } } HttpServer.prototype.listen = function () {